home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 8 / Revista CD Expert nº 08 CD1.iso / Utilitarios / Programacao / MS-DOS Interrupt List / inter60d / OPCODES.LST < prev    next >
File List  |  1999-01-03  |  444KB  |  17,371 lines

  1. OPCODE LIST            Release 60        Last change 03jan99
  2.  
  3. ------------------  OPCODE.LST    ----------------------------
  4. This is DOC 'bout undocument command and document command
  5. of any last processors. And 'bout some registers and
  6. Chips specific stuffs.
  7.  -----------------------------------------------------------
  8.  (C) (P) Potemkin's Hackers Group 1994...1998
  9.  -----------------------------------------------------------
  10. Revision 4.00    PRELIMINARY            27 Sep 1998
  11.  -----------------------------------------------------------
  12. Latest versions available on Web:
  13.     http://www.chat.ru/~phg
  14. Our contact E-mail:
  15.     avp@gdev.msk.ru
  16. ICQ:
  17.     17806489
  18.  ------------------------------------------------------------
  19. [New In revision 3.90]
  20.   o  Update steppings
  21.   o  Update Katmai Info
  22.   o  Some reformating :)
  23.   -----------------------------------------------------------
  24. [New In revision 3.81]
  25.   o  Update steppings
  26.   o  Add Vendor-specified instruction times
  27.   o  Add some new info in appendix G.
  28.   o  Some bugfixes
  29.   -----------------------------------------------------------
  30. [New In revision 3.80]
  31.   o  Cyrix EMMX instructions
  32.   o  AMD 3D instructions
  33.   o  IA-MMX2 codes
  34.   o  News in CPUID
  35.   o  Update Steppings
  36.   ------------------------------------------------------------
  37. [New In revision 3.51]
  38.   o  Some new Merced Instructions  (IA-32 and IA-64)
  39.   o  Some Katmai instructions (IA MMX-2)
  40.   o  IDT C6 MSRs
  41.   o  News in CPUID
  42.   o  News in CR4
  43.   o  Update Cyrix CPUs Info
  44.   o  New operations codes (AMD-3D,Cyrix EMMX)
  45.   o  More Pentium-II MSRs
  46.   o  Some SMM Info
  47. -------------------------------------------------------------
  48.  
  49. ----------O-AAA------------------------------------
  50. OPCODE AAA   -    ASCII adjust AX after addition
  51.  
  52. CPU:  8086+
  53. Type of Instruction: User
  54.  
  55. Instruction:  AAA   ; (no operands)
  56.  
  57. Description:
  58.  
  59.     IF ((( AL and 0FH ) > 9 ) or (AF==1)
  60.     THEN {
  61.         IF CPU<286 THEN {  AL <- AL+6 }
  62.                ELSE {  AX <- AX+6 }
  63.         AH <- AH+1
  64.         CF <- 1
  65.         AF <- 1
  66.     } ELSE {
  67.         CF <- 0
  68.         AF <- 0
  69.     }
  70.     AL <- AL and 0Fh
  71.  
  72. Note: This istruction incorrectly documented in Intel's materials.
  73.       See description field.
  74.  
  75. Flags Affected:    AF,CF        (modified)
  76.         OF,SF,ZF,PF (undefined)
  77.  
  78. Faults:
  79.     RM    PM    V86    VME
  80.     None
  81.  
  82. CPU mode: RM,PM,VM,SMM
  83.  
  84. +++++++++++++++++++++++
  85. Physical Form:
  86. COP (Code of Operation)     : 37H
  87.  
  88. Clocks:
  89.         AAA
  90. 8086:        4
  91. 8088:        4
  92. 80186:        8
  93. 80286:        3
  94. 80386:        4
  95. i486:        3
  96. Pentium:    3
  97.  
  98. Cx486SLC:    4
  99. Cx486DX:    4
  100. IBM 486BL3X:    4
  101. UMC U5S:    1
  102.  
  103. ----------O-AAD------------------------------------
  104. OPCODE AAD    - ASCII adjust AX before Division
  105.  
  106. CPU:  8086+
  107. Type of Instruction: User
  108.  
  109. Instruction:  AAD basen
  110.  
  111. Description:
  112.         AL <- (AH*basen) + AL
  113.         AH <- 0
  114.  
  115. Flags Affected: SF,ZF,PF    (modified)
  116.         OF,AF,CF    (undefined)
  117.  
  118. Faults:
  119.     RM    PM    V86    VME    SMM
  120.     None
  121.  
  122. CPU mode: RM,PM,VM,SMM
  123.  
  124. Note:    AAD    without operands means AAD with operand 0AH.
  125.  
  126. Note: NECs understand only AAD 0AH form.
  127.  
  128. +++++++++++++++++++++++
  129.  
  130. Physical Form: AAD imm8
  131.  
  132. COP (Code of Operation)     : D5H    imm8
  133.  
  134. Clocks:        AAD 0AH
  135. 8086:        60
  136. 80186:        15
  137. 80286:        14
  138. 80386:        19
  139. i486:        14
  140. Pentium:    10
  141.  
  142. Cx486SLC:    4
  143. Cx486DX:    4
  144.  
  145. IBM 486BL3X:    15
  146. UMC    U5S:    11
  147.  
  148. ----------O-AAM------------------------------------
  149. OPCODE AAM    - ASCII adjust AX after Multiply
  150.  
  151. CPU:  8086+
  152. Type of Instruction: User
  153.  
  154. Instruction:  AAM basen
  155.  
  156. Description:
  157.         AH <- AL  / basen
  158.         AL <- AL MOD basen
  159.  
  160. Flags Affected: SF,ZF,PF    (modified)
  161.         OF,AF,CF    (undefined)
  162.  
  163. Faults:
  164.     RM    PM    V86    VME    SMM
  165.     None
  166.  
  167. CPU mode: RM,PM,VM,SMM
  168.  
  169. Note:    AAM    without operands means AAM with operand 0AH.
  170.  
  171. WARNING: NECs understand only AAM 0Ah form.
  172.  
  173. +++++++++++++++++++++++
  174.  
  175. Physical Form: AAM imm8
  176.  
  177. COP (Code of Operation)     : D4H    imm8
  178.  
  179. Clocks:        AAM 0AH
  180. 8086:        83
  181. 80186:        19
  182. 80286:        16
  183. 80386:        17
  184. i486:        15
  185. Pentium:    18
  186.  
  187. Cx486SLC:    16
  188. Cx486DX:    16
  189.  
  190. IBM 486BL3X:    17
  191. UMC    U5S:    12
  192.  
  193. ----------O-ADD4S----------------------------------
  194. OPCODE ADD4S  -     Addition for packed BCD strings
  195.  
  196. CPU: all NECs  V-series
  197. Type of Instruction: User
  198.  
  199. Instruction:  ADD4S
  200.  
  201. Description:
  202.  
  203.     BCD STRING (ADDRESS=ES:DI,LENGTH=CL) <-
  204.       BCD STRING (ADDRESS=DS:SI,LENGTH=CL) +
  205.       BCD STRING (ADDRESS=ES:DI,LENGTH=CL);
  206.  
  207. Note:    si,di, other registers not changed
  208.  
  209. Flags Affected: OF,CF,ZF
  210.     ;;  ZF set if both strings are zeros.
  211.     ;;  CF,OF set as result of operation with most
  212.     ;;  signification BCDs.
  213.  
  214. CPU mode: RM
  215.  
  216. +++++++++++++++++++++++
  217. Physical Form: ADD4S
  218. COP (Code of Operation)     : 0FH 20H
  219.  
  220. Clocks:        ADD4S
  221. NEC V20:    ~19*(CL/2)+7
  222.  
  223. ----------O-BOUND----------------------------------
  224. OPCODE BOUND   -  Chack Array Index Against Bounds
  225.  
  226. CPU:  80186+,NECs
  227. Type of Instruction: User - HLL support
  228.  
  229. Instruction:  BOUND index,bound_array
  230.  
  231. Description:
  232.  
  233.         IF (index < (opsize ptr [bound_array]))
  234.            OR
  235.            (index > (opsize ptr [bound_array+opsize]))
  236.         THEN  INT 5;
  237.  
  238. Flags Affected: No Flags Affected
  239.  
  240. CPU mode: RM,PM,VM,SMM
  241.  
  242. Faults:
  243.     RM    PM    V86    VME    SMM
  244.         #GP(0)                if result is nonwritable seg.
  245.         #GP(0)                illegal memory operand
  246.                         in CS..GS (exc. SS)
  247.         #SS(0)                illegal memory operand in SS
  248.         #PF    #PF
  249.     #UD    #UD    #UD            if 2nd operand is register
  250.     #13                    if any part of operand lie
  251.                         outside of 0..FFFFh
  252.         #AC    #AC            if CPL=3 and enable AC.
  253.  
  254. Note:     (186s&NECs) saved CS:IP BOUND interrupt as pointer to following
  255.       instruction that self.
  256.      (286+) saved as pointer to BOUND instruction.
  257.  
  258. +++++++++++++++++++++++
  259.  
  260. Physical Form: BOUND reg16,mem32
  261.            BOUND reg32,mem64
  262.  
  263. COP (Code of Operation)     : 62H    Postbyte
  264. Note: for 32bit op. add Pfix 66h if in 16bit mode
  265.  
  266. Clocks:        BOUND reg16,mem16
  267.         In Range    Out Range
  268. 80186:                33-35
  269. 80286:        13        int+13
  270. 80386:        10
  271. i486:        7
  272. Pentium:    8        int+32
  273.  
  274. Cx486SLC:    11        int+11
  275. Cx486DX:    11        int+11
  276.  
  277. ----------O-BRKCS----------------------------------
  278. OPCODE BRKCS  -     Break with Contex Switch
  279.  
  280. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  281. Type of Instruction: System
  282.  
  283. Instruction:  BRKCS  bank
  284.  
  285. Description:
  286.  
  287.     Perform a High-Speed Software Interrupt with contex-switch to
  288.     register bank indicated by the lower 3-bits of 'bank'.
  289.  
  290. Info:    NEC V25/V35/V25 Plus/V35 Plus Bank System
  291.  
  292.     This Chips have     8 32bytes register banks, which placed in
  293.     Internal chip RAM by addresses:
  294.     xxE00h..xxE1Fh Bank 0
  295.     xxE20h..xxE3Fh Bank 1
  296.        .........
  297.     xxEC0h..xxEDFh Bank 6
  298.     xxEE0h..xxEFFh Bank 7
  299.     xxF00h..xxFFFh Special Functions Register
  300.     Where xx is Value of IDB register.
  301.     IBD is Byte Register contained Internal data area base
  302.     IBD addresses is FFFFFh and xxFFFh where xx is data in IBD.
  303.  
  304.     Format of Bank:
  305.     +0    Reserved
  306.     +2    Vector PC
  307.     +4    Save   PSW
  308.     +6    Save   PC
  309.     +8    DS0        ;DS
  310.     +A    SS        ;SS
  311.     +C    PS        ;CS
  312.     +E    DS1        ;ES
  313.     +10    IY        ;DI
  314.     +11    IX        ;SI
  315.     +14    BP        ;BP
  316.     +16    SP        ;SP
  317.     +18    BW        ;BX
  318.     +1A    DW        ;DX
  319.     +1C    CW        ;CX
  320.     +1E    AW        ;AX
  321.  
  322.     Format of V25 etc. PSW (FLAGS):
  323.     Bit    Description
  324.     15    1
  325.     14    RB2 \
  326.     13    RB1  >    Current Bank Number
  327.     12    RB0 /
  328.     11    V    ;OF
  329.     10    DIR    ;DF
  330.     9    IE    ;IF
  331.     8    BRK    ;TF
  332.     7    S    ;SF
  333.     6    Z    ;ZF
  334.     5    F1    General Purpose user flag #1
  335.             (accessed by Flag Special Function Register)
  336.     4    AC    ;AF
  337.     3    F0    General purpose user flag #0
  338.             (accessed by Flag Special Function Register)
  339.     2    P    ;PF
  340.     1    BRKI    I/O Trap Enable Flag
  341.     0    CY    ;CF
  342.  
  343. Flags Affected:     None
  344.  
  345. CPU mode: RM
  346.  
  347. +++++++++++++++++++++++
  348. Physical Form:    BRKCS reg16
  349. COP (Code of Operation)     : 0Fh 2Dh <1111 1RRR>
  350.  
  351. Clocks:     15
  352.  
  353. ----------O-BRKEM----------------------------------
  354. OPCODE BRKEM  -     Break for Emulation
  355.  
  356. CPU: NEC/Sony V20/V30/V40/V50
  357. Type of Instruction: System
  358.  
  359. Instruction:  BRKEM  intnum
  360.  
  361. Description:
  362.  
  363.         PUSH    FLAGS
  364.         PUSH    CS
  365.         PUSH    IP
  366.         MOV    CS,0:[intnum*4+2]
  367.         MOV    IP,0:[intnum*4]
  368.         MD <- 0;    // Enable 8080 emulation
  369.  
  370. Note:    BRKEM instruction do software interrupt and then New CS,IP loaded
  371.     it switch to 8080 mode i.e. CPU will execute 8080 code.
  372.     Mapping Table of Registers in 8080 Mode
  373.     8080 Md.   A  B     C  D  E  H  L    SP PC  F
  374.     native.       AL CH CL DH DL BH BL BP IP  FLAGS(low)
  375.     For Return of 8080 mode use CALLN instruction.
  376. Note:    I.e. 8080 addressing only 64KB then "Real Address" is CS*16+PC
  377.  
  378. Flags Affected: MD
  379.  
  380. CPU mode: RM
  381.  
  382. +++++++++++++++++++++++
  383. Physical Form:           BRKEM imm8
  384. COP (Code of Operation)     : 0FH FFH imm8
  385.  
  386. Clocks:        BRKEM  imm8
  387. NEC V20:    38
  388.  
  389. ----------O-BRKN-----------------------------------
  390. OPCODE BRKN    -  Break to Native Mode
  391.  
  392. CPU:  NEC (V25/V35) Software Guard only
  393. Type of Instruction: System
  394.  
  395. Instruction:  BRKN int_vector
  396.  
  397. Description:
  398.          [sp-1,sp-2] <- PSW        ; PSW EQU FLAGS
  399.          [sp-3,sp-4] <- PS        ; PS  EQU CS
  400.          [sp-5,sp-6] <- PC        ; PC  EQU IP
  401.          SP     <-  SP -6
  402.          IE     <-  0
  403.          BRK <-  0
  404.          MD     <-  1
  405.          PC     <- [int_vector*4 +0,+1]
  406.          PS     <- [int_vector*4 +2,+3]
  407.  
  408. Note:    The BRKN instruction switches operations in Native Mode
  409.     from Security Mode via Interrupt call. In Normal Mode
  410.     Instruction executed as     mPD70320/70322 (V25) operation mode.
  411.  
  412. Flags Affected:     None
  413.  
  414. CPU mode: RM
  415.  
  416. +++++++++++++++++++++++
  417. Physical Form:    BRKN  imm8
  418. COP (Code of Operation)     : 63h imm8
  419.  
  420. Clocks:     56+10T [44+10T]
  421.  
  422. ----------O-BRKS-----------------------------------
  423. OPCODE BRKS    -  Break to Security Mode
  424.  
  425. CPU:  NEC (V25/V35) Software Guard  only
  426. Type of Instruction: System
  427.  
  428. Instruction:  BRKS int_vector
  429.  
  430. Description:
  431.          [sp-1,sp-2] <- PSW        ; PSW EQU FLAGS
  432.          [sp-3,sp-4] <- PS        ; PS  EQU CS
  433.          [sp-5,sp-6] <- PC        ; PC  EQU IP
  434.          SP     <-  SP -6
  435.          IE     <-  0
  436.          BRK <-  0
  437.          MD     <-  0
  438.          PC     <- [int_vector*4 +0,+1]
  439.          PS     <- [int_vector*4 +2,+3]
  440.  
  441. Note:    The BRKS instruction switches operations in Security Mode
  442.     via Interrupt call. In Security Mode the fetched operation
  443.     code is executed after conversion in accordance with build-in
  444.     translation table
  445.  
  446. Flags Affected:     None
  447.  
  448. CPU mode: RM
  449.  
  450. +++++++++++++++++++++++
  451. Physical Form:    BRKS  imm8
  452. COP (Code of Operation)     : F1h imm8
  453.  
  454. Clocks:     56+10T [44+10T]
  455.  
  456. ----------O-BRKXA----------------------------------
  457. OPCODE BRKXA   -  Break to Expansion Address
  458.  
  459. CPU:  NEC V33/V53  only
  460. Type of Instruction: System
  461.  
  462. Instruction:  BRKXA int_vector
  463.  
  464. Description:
  465.          [sp-1,sp-2] <- PSW        ; PSW EQU FLAGS
  466.          [sp-3,sp-4] <- PS        ; PS  EQU CS
  467.          [sp-5,sp-6] <- PC        ; PC  EQU IP
  468.          SP     <-  SP -6
  469.          IE     <-  0
  470.          BRK <-  0
  471.          MD     <-  0
  472.          PC     <- [int_vector*4 +0,+1]
  473.          PS     <- [int_vector*4 +2,+3]
  474.          Enter Expansion Address Mode.
  475.  
  476. Note:    In NEC V53 Memory Space dividing into 1024 16K pages.
  477.     The programming model is Same as in Normal mode.
  478.  
  479.     Mechanism is:
  480.     20 bit Logical Address:     19..14 Page Num  13..0 Offset
  481.  
  482.     page Num convertin by internal table to 23..14 Page Base
  483.     tHE pHYSICAL ADDRESS is both Base and Offset.
  484.  
  485.     Address Expansion Registers:
  486.     logical Address A19..A14    I/O Address
  487.     0                FF00h
  488.     1                FF02h
  489.     ...                ...
  490.     63                FF7Eh
  491.  
  492.     Register XAM aliased with port # FF80h indicated current mode
  493.     of operation.
  494.     Format of XAM register (READ ONLY):
  495.     15..1    reserved
  496.     0    XA Flag, if=1 then in XA mode.
  497.  
  498. Format    of  V53 PSW:
  499.     15..12    1
  500.     11    V
  501.     10    DIR
  502.     9    IE
  503.     8    BRK
  504.     7    S
  505.     6    Z
  506.     5    0
  507.     4    AC
  508.     3    0
  509.     2    P
  510.     1    1
  511.     0    CY
  512.  
  513. Flags Affected:     None
  514.  
  515. CPU mode: RM
  516.  
  517. +++++++++++++++++++++++
  518. Physical Form:    BRKXA  imm8
  519. COP (Code of Operation)     : 0Fh E0h imm8
  520.  
  521. Clocks:     12
  522.  
  523. ----------O-BSWAP----------------------------------
  524. OPCODE BSWAP  - Bytes Swap
  525.  
  526. CPU:  I486 +
  527. Type of Instruction: User
  528.  
  529. Instruction: BSWAP dwordr
  530.  
  531. Description:
  532.  
  533.          XCHG  BYTE dwordr[31:24],dwordr[7:0]
  534.          XCHG  BYTE dwordr[23:16],dwordr[15:8]
  535.  
  536.          ; Need Good Picture to Show It
  537.  
  538. Notes: This instruction used for converting big-endian
  539. (Intel) format to little-endian (Motorolla etc.) format.
  540.  
  541. Flags Affected: None
  542. CPU mode: RM,PM,VM,SMM
  543.  
  544. Physical Form:         BSWAP r32
  545. COP (Code of Operation): 0FH 11001rrr  (For 32bit segment)
  546. Clocks: Cyrix Cx486SLC : 4
  547.           i486     : 1
  548.           Pentium  : 1
  549.     Cyrix Cx486DX  : 4
  550.     UMC   U5S      : 2
  551.     IBM 486BL3X    : 9
  552.  
  553. ----------O-BTCLR----------------------------------
  554. OPCODE BTCLR   -  Bit Test, If it True Clear and Branch
  555.  
  556. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  557. Type of Instruction: User
  558.  
  559. Instruction:  BTCLR var,bitnumber,Short_Label
  560.  
  561. Description:
  562.           IF  BIT(bitnumber OF var) =1 THEN
  563.             {
  564.             PC <- PC + ext - disp8;
  565.             BIT(bitnumber OF var) <-0
  566.             }
  567.  
  568. Flags Affected:     None
  569.  
  570. CPU mode: RM
  571.  
  572. +++++++++++++++++++++++
  573. Physical Form:    BTCLR reg/mem8,imm3, short_label
  574. COP (Code of Operation)     : 0Fh 9Ch PostByte imm3  Short_Label (Total=5 bytes)
  575.  
  576. Clocks:     29
  577.  
  578. ----------O-CALLN----------------------------------
  579. OPCODE CALLN     - Call Native Mode Routine
  580.  
  581. CPU: NEC/Sony V20/V30 etc
  582. Type of Instruction: System
  583.  
  584. Instruction:  CALLN intnum
  585.  
  586. Description:
  587.     CALLN instruction call (interrupt service in Native Mode)
  588.     from 8080 emulation mode:
  589.         PUSH    FLAGS
  590.         PUSH    CS
  591.         PUSH    IP
  592.         IF <- 0
  593.         TF <- 0
  594.         MD <- 1
  595.         MOV    CS,0:[intnum*4+2]
  596.         MOV    IP,0:[intnum*4]
  597.  
  598. Flags Affected: IF,TF,MD
  599.  
  600. CPU mode: 8080 Emulation
  601.  
  602. +++++++++++++++++++++++
  603. Physical Form: CALLN imm8
  604. COP (Code of Operation)     : EDH EDH imm8
  605.  
  606. Clocks:
  607. NEC V20/V30:    38-58
  608.  
  609. ----------O-CLEAR1---------------------------------
  610. OPCODE CLEAR1  -  Clear one bit
  611.  
  612. CPU: NEC/Sony all V-series.
  613. Type of Instruction: User
  614.  
  615. Instruction:  CLEAR1 dest,bitnumb
  616.  
  617. Description:
  618.  
  619.         BIT  bitnumb OF dest <- 0;
  620.  
  621. Flags Affected: None
  622.  
  623. CPU mode: RM
  624.  
  625. +++++++++++++++++++++++
  626. Physical Form:           CLEAR1 reg/mem8,CL
  627. COP (Code of Operation)     : 0FH 12H  Postbyte
  628.  
  629. Physical Form:           CLEAR1 reg/mem8,imm8
  630. COP (Code of Operation)     : 0FH 1AH  Postbyte imm8
  631.  
  632. Physical Form:           CLEAR1 reg/mem16,CL
  633. COP (Code of Operation)     : 0FH 13H  Postbyte
  634.  
  635. Physical Form:           CLEAR1 reg/mem16,imm8
  636. COP (Code of Operation)     : 0FH 1BH  Postbyte  imm8
  637.  
  638. Clocks:                 CLEAR1
  639.          r/m8,CL    r/m8,i8        r/m16,CL   r/m16,i8
  640. NEC V20:      5/14     6/15          5/14         6/15
  641.  
  642. ----------O-CMOVcc---------------------------------
  643. OPCODE CMOVcc    -    Conditional Move
  644.  
  645. CPU:  P6
  646. Type of Instruction:  User
  647.  
  648. Instruction:  CMOVcc  dest,sorc
  649.  
  650. Description:
  651.           IF condition(cc) is true THEN dest <- sorc;
  652.  
  653. Flags Affected:    None
  654.  
  655. CPU mode: RM,PM,VM,SMM
  656.  
  657. +++++++++++++++++++++++
  658. Physical Form & COPs:
  659.  
  660. CMOVO    reg,reg/mem    0FH 40H Postbyte
  661. CMOVNO    reg,reg/mem    0FH 41H Postbyte
  662. CMOVC    reg,reg/mem    0FH 42H Postbyte
  663. CMOVNC    reg,reg/mem    0FH 43H Postbyte
  664. CMOVZ    reg,reg/mem    0FH 44H Postbyte
  665. CMOVNZ    reg,reg/mem    0FH 45H Postbyte
  666. CMOVNA    reg,reg/mem    0FH 46H Postbyte
  667. CMOVA    reg,reg/mem    0FH 47H Postbyte
  668. CMOVS    reg,reg/mem    0FH 48H Postbyte
  669. CMOVNS    reg,reg/mem    0FH 49H Postbyte
  670. CMOVP    reg,reg/mem    0FH 4AH Postbyte
  671. CMOVNP    reg,reg/mem    0FH 4BH Postbyte
  672. CMOVL    reg,reg/mem    0FH 4CH Postbyte
  673. CMOVNL    reg,reg/mem    0FH 4DH Postbyte
  674. CMOVNG    reg,reg/mem    0FH 4EH Postbyte
  675. CMOVG    reg,reg/mem    0FH 4FH Postbyte
  676.  
  677. Clocks:     ~1  (~pairing with other instructions)
  678.  
  679. ----------O-CMP4S----------------------------------
  680. OPCODE CMP4S  -     Compare for packed BCD strings
  681.  
  682. CPU: NEC/Sony all  V-series
  683. Type of Instruction: User
  684.  
  685. Instruction:  CMP4S
  686.  
  687. Description:
  688.  
  689.       SetFlaGS( BCD STRING (ADDRESS=ES:DI,LENGTH=CL) -
  690.             BCD STRING (ADDRESS=DS:SI,LENGTH=CL) );
  691.  
  692. Note:    si,di, other registers not changed
  693.  
  694. Flags Affected: OF,CF,ZF
  695.     ;;  ZF set if RESULT of subtraction is zero.
  696.     ;;  CF,OF set as result of operation with most
  697.     ;;  signification BCDs.
  698.  
  699. CPU mode: RM
  700.  
  701. +++++++++++++++++++++++
  702. Physical Form: CMP4S
  703. COP (Code of Operation)     : 0FH 26H
  704.  
  705. Clocks:        CMP4S
  706. NEC V20:    ~7+19*CL
  707.  
  708. ----------O-CMPXCHG8B------------------------------
  709. OPCODE CMPXCHG8B  - Compare and exchange 8 bytes
  710.  
  711. CPU:  Pentium (tm), Pentium Pro(tm), AMD Am5k86
  712. Type of Instruction: Operation
  713.  
  714. Instruction: CMPXCHG8B dest
  715.  
  716. Note: dest is memory operand: QWORD PTR [memory]
  717.  
  718. Description:
  719.  
  720.     IF ( QWORD(EDX:EAX) = dest) THEN
  721.              {
  722.              ZF <- 1;
  723.              dest <- QWORD(ECX:EBX);
  724.              }
  725.            ELSE
  726.              {
  727.              ZF <- 0;
  728.              EDX:EAX <- dest
  729.              }
  730.       END
  731.  
  732. Flags Affected:     ZF
  733.  
  734. CPU mode: RM,PM,VM,SMM
  735.  
  736. Physical Form:           CMPXCHG8B mem64
  737. COP (Code of Operation)     : 0FH C7H Postbyte
  738. Clocks:          Pentium     : 10
  739.  
  740. Note: Postbyte MMRRRMMM:  MM<>11 if (==) then INT 6
  741.  
  742. ----------O-CMPXCHG--------------------------------
  743. OPCODE CMPXCHG    - Compare and exchange
  744.  
  745. CPU:  i486+
  746. Type of Instruction: User
  747.  
  748. Instruction: CMPXCHG dest,sorc
  749.  
  750. Description:
  751.  
  752.     Acc = if OperationSize(8)  -> AL
  753.          OperationSize(16) -> AX
  754.          OperationSize(32) -> EAX
  755.  
  756.     IF ( Acc = dest) THEN
  757.              {
  758.              ZF <- 1;
  759.              dest <- sorc;
  760.              }
  761.            ELSE
  762.              {
  763.              ZF <- 0;
  764.              Acc <- dest;
  765.              }
  766.       END
  767.  
  768. Note: This instruction used to support semaphores
  769.  
  770. Flags Affected:     ZF ( see description)
  771.          OF,SF,AF,PF,CF ( like CMP instruction ) ( see description)
  772.  
  773. CPU mode: RM,PM,VM,SMM
  774.  
  775. +++++++++++++++++++++++
  776. Physical Form:           CMPXCHG  r/m8,r8
  777. COP (Code of Operation)     : 0FH A6H Postbyte    ; i486 (A-B0 step)
  778.              : 0FH B0H Postbyte    ; i486 (B1+ step clones
  779.                            ;      and upgrades)
  780.  
  781. Clocks:
  782.        Intel i486     :  6/7     if compare OK
  783.              :  6/10 if compare FAIL
  784.      Cyrix Cx486SLC     :  5/7
  785.      Pentium (tm)     :  6
  786.  
  787. Penalty if cache miss     :
  788.       Intel i486     : 2
  789.      Cyrix Cx486SLC     : 1
  790. +++++++++++++++++++++
  791. Physical Form:           CMPXCHG  r/m16,r16
  792.                CMPXCHG  r/m32,r32
  793. COP (Code of Operation)     : 0FH A7H Postbyte    ; i486 (A-B0 step)
  794.              : 0FH B1H Postbyte    ; i486 (B1+ step clones
  795.                            ;      and upgrades)
  796.  
  797. Clocks:
  798.        Intel i486     :  6/7     if compare OK
  799.              :  6/10 if compare FAIL
  800.      Cyrix Cx486SLC     :  5/7
  801.      Pentium (tm)     :  6
  802.  
  803. Penalty if cache miss     :
  804.       Intel i486     : 2
  805.      Cyrix Cx486SLC     : 1
  806.  
  807. ----------O-CPUID----------------------------------
  808. OPCODE CPUID - CPU Identification
  809.  
  810. CPU:  Intel 486DX/SX/DX2 SL Enhanced and all later
  811. Intel processors include ( IntelDX4, IntelSX2,
  812. Pentium etc.), UMC microprocessors: U5S,U5SD,U5S-VL.
  813. Cyrix M1, AMD K5, Intel P6, and AMD Ehnanced Am486 CPU,
  814. such as A80486DX4-100SV8B.
  815.  
  816. Note: i.e.  1993+ years processors produced by Intel
  817. Note: To know if your CPU support CPUID instruction
  818. try to set ID flag ( bit 21 of EFLAGS ) to 1, and
  819. if it sets this mean that CPUID support.(Soft).
  820. Or If Your CPU is Intel Look for '&E' signature on
  821. Top side of Chip.(Hard)
  822. Type of Instruction: Operation
  823.  
  824. Instruction: CPUID
  825.  
  826. Description:
  827.  
  828.     IF (EAX=0) THEN        // All
  829.           {
  830.           EAX <- Maximum value of EAX to CALL CPUID instruction
  831.             1 for all processors (date 1 September 1994)
  832.             may be >1 in future microprocessors
  833.  
  834.           ;; EBX,EDX and ECX contain a OEM name string
  835.           ;; for Intel this string is 'GenuineIntel'
  836.  
  837.            EBX <- 756E6547H i.e. 'Genu'
  838.            EDX <- 49656E69H i.e. 'ineI'
  839.            ECX <- 6C65746EH i.e. 'ntel'
  840.  
  841.           ;; for UMC   this string is 'UMC UMC UMC '
  842.  
  843.            EBX <- 20434D55H i.e. 'UMC '
  844.            EDX <- 20434D55H i.e. 'UMC '
  845.            ECX <- 20434D55H i.e. 'UMC '
  846.  
  847.           ;; for Cyrix this string    is 'CyrixInstead'  (Cx6x86,Cx5x86 steps B+)
  848.           ;; for AMD   this string    is 'AuthenticAMD'  (K6,K5,486 Enhanced CPUs)
  849.           ;; for last NexGen    is 'NexGenDriven'  (Nx5x86 latest models)
  850.           ;; for Centaur Technology    is 'CentaurHauls'  (IDT)
  851.  
  852.           }
  853.  
  854.     ELSEIF (EAX=1) THEN        // All
  855.           {
  856.           EAX[3:0]    <- Stepping ID
  857.           EAX[7:4]    <- Model
  858.           EAX[11:8] <- Family
  859.              ;    3 - 386 family
  860.              ;    4 - i486 family
  861.              ;    5 - Pentium family
  862.              ;    6 - Pentium Pro family
  863.           EAX[15:12] <- Reserved
  864.              ;    0 - Original OEM processor
  865.              ;    1 - OverDrive
  866.              ;    2 - Dual Processor
  867.              Note: Pentium P54C have pin CPUTYPE which
  868.                define is this CPU First or Second e.t.c
  869.                in System.
  870.                So, if this chip set in "First" socket it
  871.                    return for example  0425h, but THIS chip
  872.                    return 2425h if we insert it in "Second"
  873.                    socket.
  874.         Note: Refer to Appendix B for more information.
  875.  
  876.           EAX[31:16] <- Reserved and set to 0s now
  877.  
  878.           EDX <- Compability flags
  879.           ;; below all info if bit flag =1
  880.          EDX[0] <- FPU:     FPU on Chip
  881.          EDX[1] <- VME:     Virtual Mode Extention present
  882.          EDX[2] <- DE:     Debbuging Extentions
  883.          EDX[3] <- PSE:     CPU support  4MB size pages
  884.          EDX[4] <- TSC:     TSC present (See RDTSC command)
  885.          EDX[5] <- MSR:     CPU have Pentium Compatible MSRs
  886.          EDX[6] <- PAE:     Physical Address Extension  (Intel)
  887.          EDX[6] <- PTE:     Support PTE  (Cyrix)
  888.                  When set in PTE TLB will not be flushed
  889.                  when CR3 is written.
  890.          EDX[7] <- MCE:     Machine Check exception
  891.          EDX[8] <- CX8:     Support CMPXCHG8B instruction
  892.          EDX[9] <- APIC: Local APIC on Chip (Intel)
  893.                PGE:     Page Global Extension (K5)
  894.          EDX[10]<-  reserved
  895.          EDX[11]<- SEP:     Fast System Call feature (Pentium Pro)
  896.          EDX[12]<- MTRR: CPU support Memory Type Range Register (MTRR)
  897.          EDX[13]<- PGE:     Page Global Feature support
  898.          EDX[14]<- MCA:     Machine Check Architecture
  899.          EDX[15]<- CMOV: CPU support CMOV instruction
  900.          EDX[16]<- PAT: Page Attribute Table
  901.          EDX[22..16] <- Reserved
  902.          EDX[23] <- MMX: CPU support IA MMX
  903.          EDX[24] <- FXSR: CPU Support Fast Save/Restore (IA MMX-2)
  904.          EDX[31:25] <- Reserved and set to 0s now
  905.  
  906.           }
  907.  
  908.     ELSEIF (EAX=2)
  909.           {
  910.           AL = 1    (Pentium Pro, Pentium II)
  911.           remainder of EAX and EBX,ECX,EDX contain bytes which
  912.           described cache architecture on this chip.
  913.           Description of this bytes is:
  914.           Value        Description
  915.           00h        None
  916.           01h        Instruction TLB, 4K page, 4way, 64 entry
  917.           02h        Instruction TLB, 4M page, 4way, 4 entry
  918.           03h        Data TLB, 4K page, 4way, 64 entry
  919.           04h        Data TLB, 4M page, 4way, 8 entry
  920.           06h        Instruction Cache, 8K, 4 way, 32 byte per line
  921.           0Ah        Data cache, 8K, 2 way, 32 byte per line
  922.           41h        Unifed L2 cache, 32 byte per line, 4 way, 128KB
  923.           42h        Unifed L2 cache, 32 byte per line, 4 way, 256KB
  924.           43h        Unifed L2 cache, 32 byte per line, 4 way, 512KB
  925.           44h        Unifed L2 cache, 32 byte per line, 4 way, 1MB
  926.           45h        Unifed L2 cache, 32 byte per line, 4 way, 2MB
  927.                 (Cyrix MediaGX MMX Enhanced)
  928.           70h        TLB 32-bit entry, 4 way, 4K cache
  929.           80h        L1 cache 4-way associative, 16byte/line
  930.          }
  931.  
  932.     ELSEIF (EAX = 80000000h) // (K5 not SSA/5),K6, Cyrix GXm
  933.          {
  934.         EBX,ECX,EDX <- Undefined
  935.         EAX <- Largest Extended function value recognized by CPUID.
  936.         (Note: Extended CPUID functions started with 80000000h)
  937.         (Example: For AMD 5k86 (K5) =  80000005h )
  938.          }
  939.  
  940.     ELSEIF (EAX = 80000001h) // K5,K6,Cyrix GXm
  941.          {
  942.         EAX <- AMD Processor Signature
  943.             0000051Xh  - for AMD 5k86 (K5 not SSA/5)
  944.             0000066Xh  - for AMD 6k86 (K6)
  945.         EBX,ECX <- Undefined
  946.         EDX <- Extended Feature Flags
  947.               EDX[0] <- FPU:  FPU on Chip
  948.               EDX[1] <- VME:  Virtual Mode Extention present
  949.               EDX[2] <- DE:   Debbuging Extentions
  950.               EDX[3] <- PSE:  CPU support  4MB size pages
  951.               EDX[4] <- TSC:  TSC present (See RDTSC command)
  952.               EDX[5] <- MSR:  CPU have K5 Compatible MSRs
  953.               EDX[6] <- 0  (Reserved)
  954.               EDX[7] <- MCE:  Machine Check exception
  955.               EDX[8] <- CX8:  Support CMPXCHG8B instruction
  956.               EDX[9] <- Reserved
  957.               EDX[10]<- Support SYSCALL and SYSRET instruction    (!!!)
  958.               EDX[11,12]<-  reserved
  959.               EDX[13]<- PGE:  Page Global Feature support
  960.               EDX[14]<- reserved
  961.               EDX[15]<- CMOV: CPU support CMOV instruction
  962.               EDX[16]<- FCMOV: CPU support FP. FCMOV    (!!!)
  963.               EDX[22..16] <- Reserved
  964.               EDX[23] <- MMX: CPU support IA MMX
  965.               EDX[24] <- (Cyrix) Cyrix Extended MMX
  966.               EDX[30..24] <- Reserved
  967.               EDX[31] <- AMD 3D support
  968.         ;Note: For AMD K5 = 000021BFh
  969.                For AMD K6 = 008005BFh
  970.          }
  971.  
  972.     ELSEIF (EAX = 80000002h,80000003h,80000004h)    // AMD K5,K6, Cyrix GXm
  973.          {
  974.         EAX, EBX, ECX ,EDX = CPU Name
  975.  
  976.         // Note: for AMD K5  (Don't forget x86 is BIG-Endian!!)
  977.         // CPUID(EAX)    EAX     EBX      ECX       EDX
  978.  
  979.         // 80000002h  2D444D41 7428354B 5020296D 65636F72
  980.         //        AMD-     K5(r      m) P      roce
  981.  
  982.         // 80000003h  726F7373 00000000 00000000 00000000
  983.         //        ssor
  984.  
  985.         // 80000004h  00000000 00000000 00000000 00000000
  986.          }
  987.  
  988.     ELSEIF (EAX = 80000005h)    // AMD K5,K6
  989.         {        // TLB and Cache information
  990.         EAX <- Reserved
  991.         EBX <- TLB Information:
  992.             EBX[31..24] <- Data TLB: Associativity
  993.                       (if Full assocuiativity = FFh)
  994.             EBX[23..16] <- Data TLB: Number of Entryes
  995.             EBX[15..8]  <- Instruction TLB: Associativity
  996.                       (if Full assocuiativity = FFh)
  997.             EBX[7..0]   <- Instruction TLB: Number of Entryes
  998.         ECX <- L1 Data Cache Information
  999.             ECX[31..24] <- Size in KB
  1000.             ECX[23..16] <- Associativity (if full = FFh)
  1001.             ECX[15..8]  <- Lines per Tag
  1002.             ECX[7..0]   <- Line size in Bytes
  1003.         EDX <- L1 Instruction Cache Information
  1004.             ECX[31..24] <- Size in KB
  1005.             ECX[23..16] <- Associativity (if full = FFh)
  1006.             ECX[15..8]  <- Lines per Tag
  1007.             ECX[7..0]   <- Line size in Bytes
  1008.         // Note:  after execution CPUID with EAX = 80000005h
  1009.         //     reg      AMD K5    AMD K6
  1010.         //     EBX     04800000      02800140
  1011.         //     ECX     08040120      20020220
  1012.         //     EDX     10040120      20020220
  1013.         }
  1014.     ELSE THEN
  1015.         {
  1016.          EAX,EBX,ECX,EDX <- Undefined
  1017.          }
  1018.     END.
  1019.  
  1020. Refer to:  Appendix B for more informations about CPU codes.
  1021.  
  1022. Note:    On IDT C6 CPU we may set any Identification string and family/model/
  1023.     stepping info. (See MSRs 108h,109h for More Details).
  1024.  
  1025. Here is 3 examples of Information we can may get from CPUID instruction:
  1026.  
  1027. 1) UMC U5S
  1028.    Note: All UMC Chips: U5S,U5SD, 3V chips never have FPU on-chip,
  1029.      and never support VME
  1030.  
  1031. Maximum Available of CPUID info entrys:1
  1032. Vendor string is : "UMC UMC UMC "
  1033.  
  1034. Model Info :
  1035. Stepping ID is : 3
  1036. Model           : 2
  1037. Family           : 4
  1038. M field           : 0
  1039. Compability Flags:
  1040. FPU on Chip               :-
  1041. Virtual Mode Extensions present       :-
  1042. CPU support I/O breakpoints       :-
  1043. CPU support 4MB pages           :-
  1044. Time Stamp Counter Presents       :-
  1045. CPU have Pentium compatible MSRs   :-
  1046. Machine Check Exception Presents   :-
  1047. CMPXCHG8B instruction support       :-
  1048. APIC on Chip               :-
  1049.  
  1050. 2) Intel 486
  1051.    Note: All SL Enhanced 486:  { i486SX,i486DX,i486DX2 marked '&E' on chip
  1052.    surface }, IntelSX2,IntelDX4 support VME !!!!
  1053.    But: Sxs never have FPU on chip.
  1054.  
  1055. Maximum Available of CPUID info entrys:1
  1056. Vendor string is : "GenuineIntel"
  1057.  
  1058. Model Info :
  1059. Stepping ID is : 0
  1060. Model           : 8
  1061. Family           : 4
  1062. M field           : 0
  1063. Compability Flags:
  1064. FPU on Chip               :+
  1065. Virtual Mode Extensions present       :+
  1066. CPU support I/O breakpoints       :-
  1067. CPU support 4MB pages           :-
  1068. Time Stamp Counter Presents       :-
  1069. CPU have Pentium compatible MSRs   :-
  1070. Machine Check Exception Presents   :-
  1071. CMPXCHG8B instruction support       :-
  1072. APIC on Chip               :-
  1073.  
  1074. 3) Pentium
  1075.    Note: P54C may say that build-in APIC not present if it
  1076.    not supported by external hardware !!!!! (This data from
  1077.    P54C in single processor configuration)
  1078.  
  1079. Maximum Available of CPUID info entrys:1
  1080. Vendor string is : "GenuineIntel"
  1081.  
  1082. Model Info :
  1083. Stepping ID is : 1
  1084. Model           : 2
  1085. Family           : 5
  1086. M field           : 0
  1087. Compability Flags:
  1088. FPU on Chip               :+
  1089. Virtual Mode Extensions present       :+
  1090. CPU support I/O breakpoints       :+
  1091. CPU support 4MB pages           :+
  1092. Time Stamp Counter Presents       :+
  1093. CPU have Pentium compatible MSRs   :+
  1094. Machine Check Exception Presents   :+
  1095. CMPXCHG8B instruction support       :+
  1096. APIC on Chip               :-
  1097.  
  1098. 4) Pentium OverDrive
  1099.    Note: P24T never have Machine Check Exception
  1100.  
  1101. Maximum Available of CPUID info entrys:1
  1102. Vendor string is : "GenuineIntel"
  1103.  
  1104. Model Info :
  1105. Stepping ID is : 1
  1106. Model           : 3
  1107. Family           : 5
  1108. M field           : 1
  1109. Compability Flags:
  1110. FPU on Chip               :+
  1111. Virtual Mode Extensions present       :+
  1112. CPU support I/O breakpoints       :+
  1113. CPU support 4MB pages           :+
  1114. Time Stamp Counter Presents       :+
  1115. CPU have Pentium compatible MSRs   :+
  1116. Machine Check Exception Presents   :-
  1117. CMPXCHG8B instruction support       :+
  1118. APIC on Chip               :-
  1119.  
  1120. 5) AMD Am5x86 (also AMD Enhanced 486).
  1121.  
  1122. Maximum Available of CPUID info entrys:1
  1123. Vendor string is : "AuthenticAMD"
  1124.  
  1125. Model Info :
  1126. Stepping ID is : 4
  1127. Model           : 15
  1128. Family           : 4
  1129. M field           : 0
  1130. Compability Flags:
  1131. FPU on Chip               :+
  1132. Virtual Mode Extensions present       :-
  1133. CPU support I/O breakpoints       :-
  1134. CPU support 4MB pages           :-
  1135. Time Stamp Counter Presents       :-
  1136. CPU have Pentium compatible MSRs   :-
  1137. P6 Flag: n/a               :-
  1138. Machine Check Exception Presents   :-
  1139. CMPXCHG8B instruction support       :-
  1140.  
  1141. 6) Pentium Pro (P6)
  1142.  
  1143. Maximum Available of CPUID info entrys:2     <<-------------- !!!!
  1144. Vendor string is : "GenuineIntel"
  1145.  
  1146. Model Info :
  1147. Stepping ID is : 1
  1148. Model           : 1
  1149. Family           : 6
  1150. M field           : 0
  1151. Compability Flags:
  1152. FPU on Chip               :+
  1153. Virtual Mode Extensions present       :+
  1154. CPU support I/O breakpoints       :+
  1155. CPU support 4MB pages           :+
  1156. Time Stamp Counter Presents       :+
  1157. CPU have Pentium compatible MSRs   :+
  1158. P6 Flag: n/a               :+
  1159. Machine Check Exception Presents   :+
  1160. CMPXCHG8B instruction support       :+
  1161. APIC on Chip               :+
  1162. Reserved               :-    ; bit 10
  1163. Fast System Call feature       :+
  1164. Memory Type Range Regs. support       :+
  1165. Page Global Feature support       :+
  1166. Machine Check Architecture       :+
  1167. CMOVxx instructions support       :+
  1168. IA MMX support               :+
  1169.  
  1170. 7)
  1171.  
  1172. Maximum Available of CPUID info entrys:1
  1173. Vendor string is : "CyrixInstead"
  1174.  
  1175. Compability Flags:
  1176. FPU on Chip               :+
  1177. Virtual Mode Extensions present       :-
  1178. CPU support I/O breakpoints       :+
  1179. CPU support 4MB pages           :-
  1180. Time Stamp Counter Presents       :+
  1181. CPU have Pentium compatible MSRs   :+
  1182. P6 Flag: n/a               :+
  1183. Machine Check Exception Presents   :-
  1184. CMPXCHG8B instruction support       :+
  1185. APIC on Chip               :-
  1186. Reserved               :-
  1187. Reserved               :-
  1188. Memory Type Range Regs. support       :-
  1189. Page Global Feature support       :+
  1190. Machine Check Architecture       :-
  1191. CMOVxx instructions support       :+
  1192. IA MMX support               :+
  1193.  
  1194. Note:    Some Last NexGen Nx586 support CPUID instruction, but never support ID
  1195.     flag in EFALGS, so check it with #UD hook.
  1196.  
  1197. Note:    On Cyrix CPUs need to Enable CPUID instruction, setting CPUIDEN bit
  1198.     in CCR4.
  1199.  
  1200. Note:    Cyrix Cx6x86 return on CPUID(1) in EAX next data:
  1201.         YYYYXXMMh - where
  1202.                 YYYY - normally 0s.
  1203.                 XX   - value of control register 0FCh
  1204.                        (usually 05h, may be changed to any
  1205.                     other value by user).
  1206.                 MM   - Model Unical Revision (according to DIR0)
  1207.  
  1208. Note: Cyrix 486s  never support CPUID.
  1209.  
  1210. Flags Affected: None
  1211.  
  1212. CPU mode: RM,PM,VM,SMM
  1213.  
  1214. Physical Form:         CPUID
  1215. COP (Code of Operation): 0FH A2H
  1216. Clocks:      486s & Pentium  (EAX=1)        : 14
  1217.       486s & Pentium  (EAX=0 or EAX>1)  : 9
  1218.  
  1219. ----------O-EMMS-----------------------------------
  1220. OPCODE EMMS    -  Empty MMX State
  1221.  
  1222. CPU:  all which supported IA MMX:
  1223.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  1224. Type of Instruction: User
  1225.  
  1226. Instruction: EMMS
  1227.  
  1228. Description:
  1229.  
  1230.     FloatPointTagWord  <-  FFFFh
  1231.  
  1232. Note:      The EMMS instruction sets the values of the floating-point (FP) tag
  1233.     word to empty (all ones). EMMS marks the registers as available, so
  1234.     they can subsequently be used by floating-point instructions.
  1235.       If a floating-point instruction loads into one of the registers
  1236.     before it has been reset by the EMMS instruction, a floating-point
  1237.     stack overflow can occur, which results in a FP exception or incorrect
  1238.     result. All other MMX instructions validate the entire FP tag word (all
  1239.     zeros).
  1240.       This instruction must be used to dear the MMX state at the end of all
  1241.     MMX routines, and before calling other routines that may execute
  1242.     floating-point instructions.
  1243.  
  1244. Flags affected:     None
  1245.  
  1246. Exceptions:
  1247.  
  1248. RM    PM    VM    SMM    Description
  1249. #UD    #UD    #UD    #UD    If CR0.EM = 1
  1250. #NM    #NM    #NM    #NM    If CR0.TS = 1
  1251. #MF    #MF    #MF    #MF    If pending FPU Exception
  1252.  
  1253. ++++++++++++++++++++++++++++++++++++++
  1254. COP & Times:
  1255.  
  1256. EMMS        0FH 77H
  1257.  
  1258.      P55C:    n/a
  1259. future P6:    n/a
  1260.  
  1261. ----------O-ESC------------------------------------
  1262. OPCODE ESC   -    Escape Extrnal Cooprocessors
  1263.  
  1264. CPU:  8086...80386, any Hybrid 486.
  1265. Type of Instruction: User
  1266.  
  1267. Instruction:  ESC Number,R/M
  1268.  
  1269. Description:  This Instruction uses for Link with External Coprocessors
  1270.           Such as NPX. External Coprocessors look at command sequence
  1271.           at get ESC. CPU give Memory Operand sending to A-bus EA
  1272.           doing pseudo-read operation.
  1273.           {     If 2nd Operand is Register then Do Nothing,
  1274.          If 2nd Operand is Memory   then set EA (Effective Address)
  1275.                         in Address Bus   }
  1276.           First operand is Part of Command that Ext. coprocessors get.
  1277.  
  1278. Flags Affected: None
  1279.  
  1280. Example:      ESC 0Fh,DX      means         FSQRT
  1281.  
  1282. Note:    ESC mnemonic was used for 8086 CPU, later all were used alternative
  1283.     mnemonic for cooprocessor instructions, such as FSQRT.
  1284.  
  1285. CPU mode: RM,PM,VM,SMM
  1286.  
  1287. +++++++++++++++++++++++
  1288. Physical Form:
  1289. COP (Code of Operation)     : <1101 1xxx> Postbyte
  1290.  
  1291. Clocks:        ESC  n,Reg    ESC n,Mem8/Mem16
  1292. 8088:           2             8/12+EA
  1293. 286:          9-20              9-20
  1294. 386:          N/A               N/A
  1295. 486:          N/A               N/A
  1296.  
  1297. ----------O-EXT------------------------------------
  1298. OPCODE EXT  -  Extract Bit Field
  1299.  
  1300. CPU: NEC/Sony all  V-series
  1301. Type of Instruction: User
  1302.  
  1303. Instruction:  EXT  start,len
  1304.  
  1305. Description:
  1306.  
  1307.       AX <- BitField [
  1308.                  BASE =  DS:SI
  1309.          START BIT OFFSET =  start
  1310.                LENGTH =  len
  1311.              ];
  1312.  
  1313. Note:    si and start automatically UPDATE
  1314.  
  1315. Flags Affected: None
  1316.  
  1317. CPU mode: RM
  1318.  
  1319. +++++++++++++++++++++++
  1320. Physical Form         : EXT    reg8,reg8
  1321. COP (Code of Operation)     : 0FH 33H  PostByte
  1322.  
  1323. Clocks:        EXT  reg8,reg8
  1324. NEC V20:    26-55
  1325.  
  1326. ----------O-F4X4-----------------------------------
  1327. OPCODE F4X4 - FPU: Multiplicate vector on Matrix 4x4
  1328.  
  1329. FPU:  IIT FPUs.
  1330. Type of Instruction: FPU instruction
  1331.  
  1332. Instruction: F4X4
  1333.  
  1334. Description:
  1335.  
  1336.     ;   This Instruction Multiplicate vector on
  1337.     ; Matrix 4X4
  1338.  
  1339.  _  _        _               _    _  _
  1340. |    |       |            |      |    |
  1341. | Xn |       | A00  A01  A02  A03 |      | X0 |
  1342. | Yn |    =  | A10  A11  A12  A13 |  X   | Y0 |
  1343. | Zn |       | A20  A21  A22  A23 |      | Z0 |
  1344. | Wn |       | A30  A31  A31  A33 |      | W0 |
  1345. |_  _|       |_               _|      |_  _|
  1346.  
  1347.      ; Data fetches/stores from/to FPU registers:
  1348.  
  1349.     # of      F E T C H E S          STORE
  1350.        Register     Bank0 Bank1 Bank2    Bank0
  1351.     ST      X0    A33   A31      Xn
  1352.     ST(1)      Y0    A23   A21      Yn
  1353.     ST(2)      Z0    A13   A11      Zn
  1354.     ST(3)      W0    A03   A01      Wn
  1355.     ST(4)        A32   A30
  1356.     ST(5)        A22   A20
  1357.     ST(6)        A12   A10
  1358.     ST(7)        A02   A00
  1359.  
  1360. Note: See FSBP0,FSBP1,FSBP2 for more information
  1361.  
  1362. FPU Flags Affected:  S
  1363.  
  1364. FPU mode: Any
  1365.  
  1366. Physical Form:         F4X4
  1367. COP (Code of Operation): DBH F1H
  1368. Clocks:       IIT 2c87    : 242
  1369.        IIT 3c87    : 242
  1370.        IIT 3c87SX  : 242
  1371.  
  1372. ----------O-FCMOVcc--------------------------------
  1373. OPCODE FCMOVcc     -  Floating Point Conditional Move
  1374.  
  1375. CPU:  P6
  1376. Type of Instruction:  User
  1377.  
  1378. Instruction:  FCMOVcc  dest,sorc
  1379.  
  1380. Description:
  1381.           IF condition(cc) is true THEN dest <- sorc;
  1382.  
  1383. Flags Affected:      Int: None
  1384.           Fp : None
  1385.  
  1386. Note:  Testing Integer flags:
  1387.  
  1388. cc    Meaning        Test Flags        Description
  1389. B    Below        CF=1            <
  1390. NB    Not Below    CF=0            >=
  1391. E    Equal        ZF=1            =
  1392. NE    Not Equal    ZF=0            !=
  1393. BE    Below Equal    (CF=1 .OR. ZF=1)    <=
  1394. NBE    Not BelowEqual    (CF=0 .AND. ZF=0)    >
  1395. U    Unordered    PF=1
  1396. NU    Not Unordered    PF!=1
  1397.  
  1398. CPU mode: RM,PM,VM,SMM
  1399.  
  1400. +++++++++++++++++++++++
  1401. Physical Form & COPs:
  1402.  
  1403. FCMOVB     ST,STi    DA C0+i
  1404. FCMOVE     ST,STi    DA C8+i
  1405. FCMOVBE     ST,STi    DA D0+i
  1406. FCMOVU     ST,STi    DA D8+i
  1407. FCMOVNB     ST,STi    DB C0+i
  1408. FCMOVNE     ST,STi    DB C8+i
  1409. FCMOVNBE ST,STi    DB D0+i
  1410. FCMOVNU     ST,STi    DB D8+i
  1411.  
  1412. Clocks:     N/A
  1413.  
  1414. ----------O-FCOMI----------------------------------
  1415. OPCODE FCOMI   -  Floating Point Compare setting Integer Flags
  1416.  
  1417. CPU:  P6
  1418. Type of Instruction:  User
  1419.  
  1420. Instruction:  FuCOMIp  ST0,STi
  1421.  
  1422. Description:
  1423.  
  1424.          CASE ( result (compare(ST0,STi) ) OF
  1425.         {          ;    ZF PF CF
  1426.         Not Comparable: 1  1  1
  1427.         ST0 > STi     : 0  0  0
  1428.         ST0 < STi     : 0  0  1
  1429.         ST0 = STi     : 1  0  0
  1430.         }
  1431.  
  1432.          CASE ( FP_stack_status ) OF
  1433.         {          ; SF
  1434.         Overflow      : 1
  1435.         Underflow     : 0
  1436.         Otherwize     : 0
  1437.         }
  1438.  
  1439.          CASE ( instruction ) OF
  1440.         {
  1441.         FCOMI,FUCOMI   : No FP stack adjustment;
  1442.         FCOMIP,FUCOMIP : POP ST;
  1443.         }
  1444.  
  1445. Flags Affected:      Int: CF,ZF,PF,SF
  1446.           Fp : None
  1447.  
  1448. Note: In any case Sign of zero Ignored , so +0.0 = -0.0
  1449.  
  1450. CPU mode: RM,PM,VM,SMM
  1451.  
  1452. +++++++++++++++++++++++
  1453. Physical Form & COPs:
  1454.  
  1455. FCOMI    ST0,STi     DB F0+i
  1456. FCOMIP    ST0,STi     DF F0+i
  1457. FUCOMI    ST0,STi     DB E8+i
  1458. FUCOMIP ST0,STi     DF E8+i
  1459.  
  1460. Clocks:     N/A
  1461.  
  1462. ----------O-FEMMS------------------------------
  1463. OPCODE FEMMS    - Faster Enter/Exit of MMX of F.P. state
  1464.  
  1465. CPU: AMD-3D
  1466. Type of Instruction: User
  1467.  
  1468. Instruction:    FEMMS        (no operands)
  1469.  
  1470. Description:
  1471.  
  1472.     Clear MMX state after MMX instructions.
  1473.     (FPU.TAG <- FFFFh).
  1474.     Faster version of EMMS.
  1475.  
  1476. Flags Affected:    None
  1477.  
  1478. ++++++++++++++++++++++++++++++++++
  1479. COP & Times:
  1480.  
  1481. FEMMS        0FH 0EH
  1482.  
  1483. ----------O-FINT-----------------------------------
  1484. OPCODE FINT    -  Finished Interrupt
  1485.  
  1486. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  1487. Type of Instruction: System
  1488.  
  1489. Instruction:  FINT
  1490.  
  1491. Description:
  1492.         Inticate to Internal Interrupt controller that
  1493.         interrupt service Routine is completed. (EOI)
  1494.  
  1495. Flags Affected:     None
  1496.  
  1497. CPU mode: RM
  1498.  
  1499. +++++++++++++++++++++++
  1500. Physical Form:    FINT
  1501. COP (Code of Operation)     : 0Fh 92h
  1502.  
  1503. Clocks: 2
  1504.  
  1505. ----------O-FNDISI---------------------------------
  1506. OPCODE FNDISI - Disable NPX Interrupt
  1507.  
  1508. FPU:  i8087 only
  1509. Type of Instruction: FPU instruction
  1510.  
  1511. Instruction: FNDISI
  1512.  
  1513. Description:
  1514.  
  1515.     CW.IEM <- 1;    // Enable NPX interrupt
  1516.  
  1517. Note:  IEM is 7 of FPU.CW
  1518.  
  1519. FPU Flags Affected: None
  1520.  
  1521. CPU mode: 8087 support just real mode
  1522.  
  1523. Physical Form:         FNDISI
  1524. COP (Code of Operation): DBH E1H
  1525. Clocks:          i8087     5
  1526.  
  1527. ----------O-FNENI----------------------------------
  1528. OPCODE FNENI - Enable NPX Interrupt
  1529.  
  1530. FPU:  i8087 only
  1531. Type of Instruction: FPU instruction
  1532.  
  1533. Instruction: FNENI
  1534.  
  1535. Description:
  1536.  
  1537.     CW.IEM <- 0;    // Enable NPX interrupt
  1538.  
  1539. Note:  IEM is 7 of FPU.CW
  1540.  
  1541. FPU Flags Affected: None
  1542.  
  1543. CPU mode: 8087 support just real mode
  1544.  
  1545. Physical Form:         FNENI
  1546. COP (Code of Operation): DBH E0H
  1547. Clocks:          i8087     5
  1548.  
  1549. ----------O-FNSTDW---------------------------------
  1550. OPCODE FNSTDW - FPU Not wait Store Device Word register
  1551.  
  1552. FPU:  i387SL Mobile
  1553. Type of Instruction: FPU instruction
  1554.  
  1555. Instruction: FNSTDW dest
  1556.  
  1557. Description:
  1558.  
  1559.     dest <- Device Word
  1560.  
  1561. Format of Device word:
  1562.     bit(s)    Description    (Table )
  1563.     0-7    Reserved
  1564.      8    S - Status bit:
  1565.             if S=1 then FP device is a static design and OS
  1566.             or APM Bios may set CLK slow to 0 Mhz without
  1567.             lost any data.
  1568.     9-15    Reserved
  1569.  
  1570. Note: Device word register valid only after FNINIT
  1571.  
  1572. FPU Flags Affected: None
  1573.  
  1574. CPU mode: Any
  1575.  
  1576. Physical Form:         FNSTDW     AX
  1577. COP (Code of Operation): DFH E1H
  1578. Clocks:          i387SL Mobile: 13
  1579.  
  1580. ----------O-FNSTSG---------------------------------
  1581. OPCODE FNSTSG - FPU Not wait Store Signature Word register
  1582.  
  1583. FPU:  i387SL Mobile
  1584. Type of Instruction: FPU instruction
  1585.  
  1586. Instruction: FNSTSG dest
  1587.  
  1588. Description:
  1589.  
  1590.     dest <- Signature Word
  1591.  
  1592. Format of Signature word:
  1593.     bit(s)    Description    (Table )
  1594.      3-0    Revision
  1595.      7-4    Steppin
  1596.     11-8    Family
  1597.     15-12    Version
  1598.  
  1599. Note:
  1600.     For i387(tm) SL Mobile Signature is:
  1601.         Version     = 2
  1602.         Family     = 3   ; 387
  1603.         Stepping = 1   ; Ax step
  1604.         Revision = 0   ; x0 step
  1605.                 i.e i387(tm) SL is A0 step
  1606.  
  1607. Note: This FPU is out of life
  1608.  
  1609. Note: Signature word register valid only after FNINIT
  1610.  
  1611. FPU Flags Affected: None
  1612.  
  1613. CPU mode: Any
  1614.  
  1615. Physical Form:         FNSTSG     AX
  1616. COP (Code of Operation): DFH E2H
  1617. Clocks:          i387SL Mobile: 13
  1618.  
  1619. ----------O-FPO2-----------------------------------
  1620. OPCODE FPO2  -    Floating Point Operations 2nd Way
  1621.  
  1622. CPU: NEC/Sony  all V-series
  1623. Type of Instruction: User
  1624.  
  1625. Instruction:  FPO2  fp_op,mem
  1626.  
  1627. Description:
  1628.           This instruction was building for sending FP commands to
  1629.           NEC NPX which never be realized
  1630.  
  1631. Flags Affected: None
  1632.  
  1633. CPU mode: RM
  1634.  
  1635. +++++++++++++++++++++++
  1636. Physical Form         : FPO2 imm4,reg/mem
  1637. COP (Code of Operation)     :
  1638.             If imm4 in range 0-7 then
  1639.                 66H     mmFFFMMM there FFF is imm4.
  1640.             If imm4 in range 7-F then
  1641.                 67H     mmFFFMMM there FFF is imm4.
  1642.  
  1643. Clocks:        FPO2  imm4,reg/mem
  1644. NEC V20:         2/11
  1645.  
  1646. ----------O-FRICHOP--------------------------------
  1647. OPCODE FRICHOP - FPU: Round to Integer chop method
  1648.  
  1649. FPU:  Cyrix FPUs and 486s with FPU on chip
  1650. Type of Instruction: FPU instruction
  1651.  
  1652. Instruction: FRICHOP
  1653.  
  1654. Description:
  1655.  
  1656.     ST <- ROUND ( ST,CHOP )
  1657.  
  1658. Note:
  1659.     This instruction calculate rounding ST toward zero
  1660.     i.e.  ignoring part righter that decimal .
  1661.  
  1662. Examples:
  1663.  
  1664.      1.2   ->   1.0
  1665.     -1.2   ->  -1.0
  1666.      3.0   ->   3.0
  1667.      0.0   ->   0.0
  1668.      1.5   ->   1.0
  1669.     -2.0   ->  -2.0
  1670.  
  1671. FPU Flags Affected:  S,P,D,I,C1
  1672.  
  1673. FPU mode: Any
  1674.  
  1675. Physical Form:         FRICHOP
  1676. COP (Code of Operation): DDH FCH
  1677. Clocks:          Cx83D87  : 15
  1678.           Cx83S87  : 15
  1679.           CxEMC87  : 15
  1680.           Cx487DLC :
  1681.  
  1682. ----------O-FRINEAR--------------------------------
  1683. OPCODE FRINEAR - FPU: Round to Integer Nearest method
  1684.  
  1685. FPU:  Cyrix FPUs and 486s with FPU on chip
  1686. Type of Instruction: FPU instruction
  1687.  
  1688. Instruction: FRINEAR
  1689.  
  1690. Description:
  1691.  
  1692.     ST <- ROUND ( ST,NEAREST )
  1693.  
  1694. Note:
  1695.     This instruction calculate rounding ST toward nearest
  1696.  
  1697. Examples:
  1698.  
  1699.      1.2   ->   1.0
  1700.     -1.2   ->  -1.0
  1701.      3.0   ->   3.0
  1702.      0.0   ->   0.0
  1703.      1.5   ->   1.0
  1704.      1.8   ->   2.0
  1705.     -2.0   ->  -2.0
  1706.  
  1707. FPU Flags Affected:  S,P,D,I,C1
  1708.  
  1709. FPU mode: Any
  1710.  
  1711. Physical Form:         FRINEAR
  1712. COP (Code of Operation): DFH FCH
  1713. Clocks:          Cx83D87  : 15
  1714.           Cx83S87  : 15
  1715.           CxEMC87  : 15
  1716.           Cx487DLC :
  1717.  
  1718. ----------O-FRINT2---------------------------------
  1719. OPCODE FRINT2 - FPU: Round to Integer
  1720.  
  1721. FPU:  Cyrix FPUs and 486s with FPU on chip
  1722. Type of Instruction: FPU instruction
  1723.  
  1724. Instruction: FRINT2
  1725.  
  1726. Description:
  1727.  
  1728.     IF ( exact half ) THEN
  1729.         {
  1730.         ST <- SIGN(ST) * ROUND(ABS(ST)+0.5,NEAREST)
  1731.         }
  1732.         ELSE
  1733.         {
  1734.         ST <- ROUND ( ST,NEAREST )
  1735.         }
  1736.     END
  1737.  
  1738. Note:
  1739.     This instruction calculate rounding ST toward nearest,
  1740.     but if number is exact half then this instruction round
  1741.     it toward signed infinity. Sign of this infinity is same
  1742.     with sign of number.
  1743.  
  1744. Examples:
  1745.  
  1746.      1.2   ->   1.0
  1747.     -1.2   ->  -1.0
  1748.      3.0   ->   3.0
  1749.      0.0   ->   0.0
  1750.      1.5   ->   2.0
  1751.      1.8   ->   2.0
  1752.     -2.0   ->  -2.0
  1753.     -1.5   ->  -2.0
  1754.  
  1755. FPU Flags Affected:  S,P,D,I,C1
  1756.  
  1757. FPU mode: Any
  1758.  
  1759. Physical Form:         FRINT2
  1760. COP (Code of Operation): DBH FCH
  1761. Clocks:          Cx83D87  : 15
  1762.           Cx83S87  : 15
  1763.           CxEMC87  : 15
  1764.           Cx487DLC :
  1765.  
  1766. ----------O-FRSTPM---------------------------------
  1767. OPCODE FRSTPM - FPU Reset Protected Mode
  1768.  
  1769. FPU:  i287XL i287XLT
  1770. Type of Instruction: FPU instruction
  1771.  
  1772. Instruction: FRSTPM
  1773.  
  1774. Description:
  1775.  
  1776.     Reset Cooprocessor from Protected Mode
  1777.     to Real Address mode.
  1778.  
  1779. FPU Flags Affected: None
  1780.  
  1781. CPU mode:Any ???
  1782.  
  1783. Physical Form:         FRSTPM
  1784. COP (Code of Operation): DBH E5H
  1785. Clocks:          i287XL   : 12
  1786.           i287XLT  : 12
  1787.  
  1788. ----------O-FSBP0----------------------------------
  1789. OPCODE FSBP0 - FPU: Set Bank pointer to Bank # 0
  1790.  
  1791. FPU:  IIT FPUs.
  1792. Type of Instruction: FPU instruction
  1793.  
  1794. Instruction: FSBP0
  1795.  
  1796. Description:
  1797.  
  1798.     ;   This Instruction set current bank pointer to
  1799.     ; Bank # 0.
  1800.  
  1801.     ;   Each bank contain eight 80bit registers
  1802.     ;   There are 3 banks (0,1,2) in Chip
  1803.  
  1804.     ;   After initialization FPU select bank # 0.
  1805.  
  1806. FPU Flags Affected:  None
  1807.  
  1808. FPU mode: Any
  1809.  
  1810. Physical Form:         FSBP0
  1811. COP (Code of Operation): DBH E8H
  1812. Clocks:       IIT 2c87    : 6
  1813.        IIT 3c87    : 6
  1814.        IIT 3c87SX  : 6
  1815.  
  1816. ----------O-FSBP1----------------------------------
  1817. OPCODE FSBP1 - FPU: Set Bank pointer to Bank # 1
  1818.  
  1819. FPU:  IIT FPUs.
  1820. Type of Instruction: FPU instruction
  1821.  
  1822. Instruction: FSBP1
  1823.  
  1824. Description:
  1825.  
  1826.     ;   This Instruction set current bank pointer to
  1827.     ; Bank # 1.
  1828.  
  1829.     ;   Each bank contain eight 80bit registers
  1830.     ;   There are 3 banks (0,1,2) in Chip
  1831.  
  1832.     ;   After initialization FPU select bank # 0.
  1833.  
  1834. FPU Flags Affected:  None
  1835.  
  1836. FPU mode: Any
  1837.  
  1838. Physical Form:         FSBP1
  1839. COP (Code of Operation): DBH EBH
  1840. Clocks:       IIT 2c87    : 6
  1841.        IIT 3c87    : 6
  1842.        IIT 3c87SX  : 6
  1843.  
  1844. ----------O-FSBP2----------------------------------
  1845. OPCODE FSBP2 - FPU: Set Bank pointer to Bank # 2
  1846.  
  1847. FPU:  IIT FPUs.
  1848. Type of Instruction: FPU instruction
  1849.  
  1850. Instruction: FSBP2
  1851.  
  1852. Description:
  1853.  
  1854.     ;   This Instruction set current bank pointer to
  1855.     ; Bank # 2.
  1856.  
  1857.     ;   Each bank contain eight 80bit registers
  1858.     ;   There are 3 banks (0,1,2) in Chip
  1859.  
  1860.     ;   After initialization FPU select bank # 0.
  1861.  
  1862. FPU Flags Affected:  None
  1863.  
  1864. FPU mode: Any
  1865.  
  1866. Physical Form:         FSBP2
  1867. COP (Code of Operation): DBH EAH
  1868. Clocks:       IIT 2c87    : 6
  1869.        IIT 3c87    : 6
  1870.        IIT 3c87SX  : 6
  1871.  
  1872. ----------O-FSETPM---------------------------------
  1873. OPCODE FSETPM - FPU Set Protected Mode Adressing
  1874.  
  1875. FPU:  80287, i287XL i287XLT
  1876. Type of Instruction: FPU instruction
  1877.  
  1878. Instruction: FRSTPM
  1879.  
  1880. Description:
  1881.  
  1882.     Setup Coprocessor for addressing in Protected mode
  1883.  
  1884. FPU Flags Affected: None
  1885.  
  1886. CPU mode:Any ???
  1887.  
  1888. Physical Form:         FSETPM
  1889. COP (Code of Operation): DBH E4H
  1890. Clocks:          i287XL   : 12
  1891.           i287XLT  : 12
  1892.  
  1893. ----------O-FXRSTOR--------------------------------
  1894. OPCODE FXRSTOR    -  Fast Restore F.P. Context
  1895.  
  1896. CPU:  Katmai/Deschutes (IA MMX-2)
  1897. Type of Instruction:  User
  1898.  
  1899. Instruction:  FXRSTOR  src
  1900.  
  1901. Description:
  1902.     Fast Restore 94 (16-bit mode) or 108 (32-bit mode) byte of
  1903.     F.P. context to memory.
  1904.     Format of context as in standart x86 instruction: FSAVE.
  1905.  
  1906. Note:    Check CPUID, EAX=1, bit 24 for knew CPU support this feature.
  1907.     And then look at CR4.bit9.
  1908.  
  1909. Note:    See FXSAVE for more information
  1910.  
  1911. Flags Affected:    None
  1912.  
  1913. CPU mode: any
  1914.  
  1915. +++++++++++++++++++++++
  1916. Physical Form & COPs:
  1917.  
  1918. FXRSTOR    mem512byte    0F AE mm001mmm
  1919.  
  1920. Clocks:     n/a
  1921.  
  1922. ----------O-FXSAVE---------------------------------
  1923. OPCODE FXSAVE    -  Fast Save F.P. Context
  1924.  
  1925. CPU:  Katmai/Deschutes (IA MMX-2)
  1926. Type of Instruction:  User
  1927.  
  1928. Instruction:  FXSAVE  dest
  1929.  
  1930. Description:
  1931.     Fast Save 94 (16-bit mode) or 108 (32-bit mode) byte of
  1932.     F.P. context to memory.
  1933.     Format of context as in standart x86 instruction: FSAVE.
  1934.  
  1935. Note:    Check CPUID, EAX=1, bit 24 for knew CPU support this feature.
  1936.     And then look at CR4.bit9.
  1937.  
  1938. Format of F.P./MMX Save Area:
  1939.     Offset    (Table )
  1940.      (dec)    Size    Description
  1941.     +00    WORD    FCW    (Control word)
  1942.     +02    WORD    FSW    (Status     word)
  1943.     +04    WORD    FTW    (Tag     word)
  1944.     +06    WORD    FOP    (lower 11-bit F.P. opcode)
  1945.     +08    DWORD    IP    (F.P. Instruction pointer)
  1946.     +12    WORD    CS
  1947.     +16    DWORD    DP    (F.P. Data pointer)
  1948.     +20    WORD    DS
  1949.     +32    TBYTE    ST0/MM0
  1950.     +48    TBYTE    ST1/MM1
  1951.     +64    TBYTE    ST2/MM2
  1952.     +80    TBYTE    ST3/MM3
  1953.     +96    TBYTE    ST4/MM4
  1954.     +112    TBYTE    ST5/MM5
  1955.     +128    TBYTE    ST6/MM6
  1956.     +144    TBYTE    ST7/MM7
  1957.  
  1958.     All other fields are reserved.
  1959.     Full length of Save/Restore area is 512 byte.
  1960.  
  1961. Flags Affected:    None
  1962.  
  1963. CPU mode: any
  1964.  
  1965. +++++++++++++++++++++++
  1966. Physical Form & COPs:
  1967.  
  1968. FXSAVE    mem512byte    0F AE mm000mmm
  1969.  
  1970. Clocks:     n/a
  1971.  
  1972. ----------O-IBTS-----------------------------------
  1973. OPCODE IBTS    -  Insert Bits String
  1974.  
  1975. CPU:  80386 step A0-B0 only
  1976. Type of Instruction: User
  1977.  
  1978. Instruction:  IBTS base,bitoffset,len,sorc
  1979.  
  1980. Description:
  1981.          Write bit string length <len> bits from
  1982.          <sorc> [bits <len> .. 0 ]    (lowest bits) to bitfield,
  1983.          defined by <base> and bitsoffset <bitoffset> from this base
  1984.          to start of the field to write. String write from this start
  1985.          field bit to higher memory addresses or register bits.
  1986.  
  1987. Flags Affected: None
  1988.  
  1989. CPU mode: RM,PM,VM
  1990.  
  1991. +++++++++++++++++++++++
  1992. Physical Form:      IBTS    r/m16,AX,CL,r16
  1993.           IBTS    r/m32,EAX,CL,r32
  1994. COP (Code of Operation)     : 0FH A7H Postbyte
  1995.  
  1996. Clocks:        IBTS
  1997. 80386:        12/19
  1998.  
  1999. ----------O-ICEBP----------------------------------
  2000. OPCODE ICEBP  - PWI Mode BreakPoint, ICE address space
  2001.  
  2002. CPU:  IBM 486SLC2
  2003. Type of Instruction: System
  2004.  
  2005. Instruction: ICEBP
  2006.  
  2007. Description:
  2008.  
  2009.     IF (condition) THEN  ; see condition below
  2010.            {
  2011.            SAVE STATUS OF EXECUTION TO ICE space;
  2012.            ENTER SMM;
  2013.            }
  2014.        ELSE
  2015.           {
  2016.           INT 1;
  2017.           }
  2018.        END
  2019.  
  2020. Note:    This condition can be set before execution this instruction:
  2021.     CPL=0
  2022.     MSR1000H.EPCEA=1
  2023.     MSR1000H.EPWI=1
  2024.  
  2025.     See Appendix X for more info.
  2026.  
  2027. Flags Affected: None
  2028.  
  2029. CPU mode: RM,PM0
  2030.  
  2031. Physical Form:         ICEBP
  2032. COP (Code of Operation): F1H
  2033. Clocks:     IBM 486SLC2   : 460
  2034.  
  2035. ----------O-ICEBP----------------------------------
  2036. OPCODE ICEBP  -     In-Circuit Emulator Breakpoint
  2037.  
  2038. CPU:  some models of i486, i386, Pentium, Pentium Pro
  2039. Type of Instruction: System
  2040.  
  2041. Instruction: ICEBP
  2042.  
  2043. Description:
  2044.  
  2045.     IF (condition) THEN  ; see condition below
  2046.            {
  2047.            CHANGED TO THE ICE instruction mode;
  2048.            }
  2049.        ELSE
  2050.           {
  2051.           INT 1;
  2052.           }
  2053.        END
  2054.  
  2055. Note:  386/486:    Condition  is  DR7.bit12=1
  2056.        (CPU must be supported ICE).
  2057.  
  2058. Note: This instruction very usefull to debbuging as Single-Byte Interrupt
  2059.       but it generate never int 3, but int 1.
  2060.  
  2061. Note: On Pentium Interrupt redirection initiately disabled on PMCR
  2062. (Probe Mode Control Register), which is only accessable via debug port
  2063. i.e. Need  external hardware for enable normal ICEBP execution.
  2064.  
  2065. Note: On Pentium Pro situation is the same.
  2066.       But in Pentium Pro Intel named this instruction INT01.
  2067.  
  2068. Flags Affected: None
  2069.  
  2070. CPU mode: RM,PM0
  2071.  
  2072. Physical Form:         ICEBP
  2073. COP (Code of Operation): F1H
  2074. Clocks:               : N/A
  2075.  
  2076. ----------O-ICERET---------------------------------
  2077. OPCODE ICERET  - Return from PWI mode, ICE space
  2078.  
  2079. CPU: IBM 486SLC2
  2080. Type of Instruction: System Operation
  2081.             (Work only then CPL=0)
  2082.  
  2083. Instruction: ICERET
  2084.  
  2085. Description:
  2086.           Load All Registers (Include Shadow Registers) from Table
  2087.           Which Begin on  place pointed ES:EDI, and return from PWI
  2088.           mode.
  2089.  
  2090. Format of ICERET Table:
  2091.     (Table )
  2092.            Offset  Len  Description
  2093.         0H    4    CR0
  2094.         4H    4    EFLAGS
  2095.         8H    4    EIP
  2096.         CH    4    EDI
  2097.         10H    4    ESI
  2098.         14H    4    EBP
  2099.         18H    4    ESP
  2100.         1CH    4    EBX
  2101.         20H    4    EDX
  2102.         24H    4    ESX
  2103.         28H    4    EAX
  2104.         2CH    4    DR6
  2105.         30H    4    DR7
  2106.         34H    4    TR     (16 bit, zero filled up)
  2107.         38H    4    LDT  ---------
  2108.         3CH    4    GS   ---------
  2109.         40H    4    FS   ---------
  2110.         44H    4    DS   ---------
  2111.         48H    4    SS   ---------
  2112.         4CH    4    CS   ---------
  2113.         50H    4    ES   ---------
  2114.         54H    4    TSS.attrib
  2115.         58H    4    TSS.base
  2116.         5CH    4    TSS.limit
  2117.         60H    4    Reserved
  2118.         64H    4    IDT.base
  2119.         68H    4    IDT.limit
  2120.         6CH    4    REP OUTS overrun flag
  2121.         70H    4    GDT.base
  2122.         74H    4    GDT.limit
  2123.         78H    4    LDT.attrib
  2124.         7CH    4    LDT.base
  2125.         80H    4    LDT.limit
  2126.         84H    4    GS.attrib
  2127.         88H    4    GS.base
  2128.         8CH    4    GS.limit
  2129.         90H    4    FS.attrib
  2130.         94H    4    FS.base
  2131.         98H    4    FS.limit
  2132.         9CH    4    DS.attrib
  2133.         A0H    4    DS.base
  2134.         A4H    4    DS.limit
  2135.         A8H    4    SS.attrib
  2136.         ACH    4    SS.base
  2137.         B0H    4    SS.limit
  2138.         B4H    4    CS.attrib
  2139.         B8H    4    CS.base
  2140.         BCH    4    CS.limit
  2141.         C0H    4    ES.attrib
  2142.         C4H    4    ES.base
  2143.         C8H    4    ES.limit
  2144.                 Unknown Unusable area
  2145.                 ;; Temporary registers:
  2146.         100H    4    TST
  2147.         104H    4    IDX
  2148.         108H    4    TMPH
  2149.         10CH    4    TMPG
  2150.         110H    4    TMPF
  2151.         114H    4    TMPE
  2152.         118H    4    TMPD
  2153.         11CH    4    TMPC
  2154.         120H    4    TMPB
  2155.         124H    4    TMPA
  2156.  
  2157.         128H    4    CR2
  2158.         12CH    4    CR3
  2159.         130H    4    MSR1001H (31-0)
  2160.         134H    4    MSR1001H (63-32)
  2161.         138H    4    MSR1000H (15-0)
  2162.         13CH    4    DR0
  2163.         140H    4    DR1
  2164.         144H    4    DR2
  2165.         148H    4    DR3
  2166.         14CH    4    PEIP
  2167.         Length of table is 150H bytes.
  2168.  
  2169.     see Appendix X for more info.
  2170.  
  2171. Note: For descriptor format refer to LOADALL and RES3 instructions.
  2172.  
  2173. Flags Affected: All (FLAGS Register Reload)
  2174.  
  2175. CPU mode: SMM
  2176.  
  2177. Physical Form:         ICERET
  2178. COP (Code of Operation): 0FH 07H  Note: Code is same with Intel's LOADALL
  2179. Clocks:     IBM 486SLC2   : 440
  2180.  
  2181. ----------O-INS------------------------------------
  2182. OPCODE INS  -  Insert Bit String
  2183.  
  2184. CPU: NEC/Sony  all V-series
  2185. Type of Instruction: User
  2186.  
  2187. Instruction:  INS  start,len
  2188.  
  2189. Description:
  2190.  
  2191.       BitField [         BASE =  ES:DI
  2192.          START BIT OFFSET =  start
  2193.                LENGTH =  len
  2194.              ]   <-     AX [ bits= (len-1)..0]
  2195.  
  2196. Note:    di and start automatically UPDATE
  2197. Note:    Alternative Name of this instruction is NECINS
  2198.  
  2199. Flags Affected: None
  2200.  
  2201. CPU mode: RM
  2202.  
  2203. +++++++++++++++++++++++
  2204. Physical Form         : INS    reg8,reg8
  2205. COP (Code of Operation)     : 0FH 31H  PostByte
  2206.  
  2207. Clocks:        INS  reg8,reg8
  2208. NEC V20:    31-117
  2209.  
  2210. ----------O-INVD-----------------------------------
  2211. OPCODE INVD  - Invalidate Cache Buffer
  2212.  
  2213. CPU:  I486 +
  2214. Type of Instruction: System
  2215.  
  2216. Instruction: INVD
  2217.  
  2218. Description:
  2219.  
  2220.          FLUSH INTERNAL CACHE
  2221.    ( It means that all lines of internal caches sets as
  2222.     invalid )
  2223.      SIGNAL EXTERNAL CACHE TO FLUSH
  2224.  
  2225. Notes: This instruction not work in Real Mode and  in
  2226. Protected mode work only in ring 0 ;
  2227.  
  2228. Flags Affected: None
  2229.  
  2230. CPU mode: PM0,SMM?
  2231.  
  2232. Physical Form:         INVD
  2233. COP (Code of Operation): 0FH 08H
  2234. Clocks: Cyrix Cx486SLC : 4
  2235.           i486     : 4
  2236.           Pentium  : 15
  2237.  
  2238. ----------O-INVLPG---------------------------------
  2239. OPCODE INVLPG  - Invalidate Page Entry In TLB
  2240.  
  2241. CPU:  I486 +
  2242. Type of Instruction: System
  2243.  
  2244. Instruction: INVLPG mem
  2245.  
  2246. Description:
  2247.  
  2248.     IF found in data or code (if both) (or common if single)
  2249.        TLB entry with linear address (page part) same as
  2250.        memory operand <mem> then mark this entry as Invalid;
  2251.  
  2252. Notes: This instruction not work in Real Mode and  in
  2253. Protected mode work only in ring 0 ;
  2254.  
  2255. Flags Affected: None
  2256.  
  2257. CPU mode: RM,PM,VM,SMM
  2258.  
  2259. Physical Form:         INVLPG mem
  2260. COP (Code of Operation): 0FH 01H mm111mmm
  2261. Clocks: Cyrix Cx486SLC : 4
  2262.           i486     : 12 if hit
  2263.                : 11 if not hit
  2264.           Pentium  : 25
  2265.  
  2266. ----------O-JMPX-----------------------------------
  2267. OPCODE JMPX  - Jump and change to 64-bit ISA.
  2268.  
  2269. CPU:  Merced
  2270. Type of Instruction: User
  2271.  
  2272. Instruction: JMPX    dest
  2273.  
  2274. Description:
  2275.  
  2276.     This instruction make jump to specified address, and
  2277.     change execution mode from IA-32 to IA-64.
  2278.     So address must be 16-byte aligned.
  2279.  
  2280. Note:    The other method to cnange execution mode to IA-64 is interrupt
  2281.     to 64-bit code or IRET in IA-32 routine, which will be called from
  2282.     IA-64.
  2283.  
  2284. Flags Affected: None
  2285.  
  2286. CPU mode: IA-32
  2287.  
  2288. Physical Form:         JMPX    rel16/rel32
  2289.              JMPX    r/m16
  2290.              JMPX    r/m32
  2291. COP (Code of Operation): ???
  2292. Clocks:        Merced :
  2293.  
  2294. ----------O-LOADALL--------------------------------
  2295. OPCODE LOADALL    - Load All Registers
  2296.  
  2297. CPU:  Intel 386+ +all clones
  2298. Type of Instruction: System
  2299.             (Work only then CPL=0)
  2300.  
  2301. Instruction: LOADALL
  2302.  
  2303. Description:
  2304.           Load All Registers (Include Shadow Registers) from Table
  2305.           Which Begin on  place pointed ES:EDI
  2306.  
  2307. Format of LOADALL Table:
  2308.     (Table )
  2309.            Offset  Len  Description
  2310.         0H    4    CR0
  2311.         4H    4    EFLAGS
  2312.         8H    4    EIP
  2313.         CH    4    EDI
  2314.         10H    4    ESI
  2315.         14H    4    EBP
  2316.         18H    4    ESP
  2317.         1CH    4    EBX
  2318.         20H    4    EDX
  2319.         24H    4    ESX
  2320.         28H    4    EAX
  2321.         2CH    4    DR6
  2322.         30H    4    DR7
  2323.         34H    4    TR     (16 bit, zero filled up)
  2324.         38H    4    LDT  ---------
  2325.         3CH    4    GS   ---------
  2326.         40H    4    FS   ---------
  2327.         44H    4    DS   ---------
  2328.         48H    4    SS   ---------
  2329.         4CH    4    CS   ---------
  2330.         50H    4    ES   ---------
  2331.         54H    4    TSS.attrib
  2332.         58H    4    TSS.base
  2333.         5CH    4    TSS.limit
  2334.         60H    4    0s
  2335.         64H    4    IDT.base
  2336.         68H    4    IDT.limit
  2337.         6CH    4    0s
  2338.         70H    4    GDT.base
  2339.         74H    4    GDT.limit
  2340.         78H    4    LDT.attrib
  2341.         7CH    4    LDT.base
  2342.         80H    4    LDT.limit
  2343.         84H    4    GS.attrib
  2344.         88H    4    GS.base
  2345.         8CH    4    GS.limit
  2346.         90H    4    FS.attrib
  2347.         94H    4    FS.base
  2348.         98H    4    FS.limit
  2349.         9CH    4    DS.attrib
  2350.         A0H    4    DS.base
  2351.         A4H    4    DS.limit
  2352.         A8H    4    SS.attrib
  2353.         ACH    4    SS.base
  2354.         B0H    4    SS.limit
  2355.         B4H    4    CS.attrib
  2356.         B8H    4    CS.base
  2357.         BCH    4    CS.limit
  2358.         C0H    4    ES.attrib
  2359.         C4H    4    ES.base
  2360.         C8H    4    ES.limit
  2361.         CCH    4    Length of table
  2362.         D0H    30h    Unused,not loaded
  2363.         100H    4    Temporary Register IST
  2364.         104H    4    Temporary Register I
  2365.         108H    4    Temporary Register H
  2366.         10CH    4    Temporary Register G
  2367.         110H    4    Temporary Register F
  2368.         114H    4    Temporary Register E
  2369.         118H    4    Temporary Register D
  2370.         11CH    4    Temporary Register C
  2371.         120H    4    Temporary Register B
  2372.         124H    4    Temporary Register A
  2373.  
  2374. Format    of Attrib field:
  2375.  
  2376.            Byte    Description
  2377.            0    0s
  2378.            1    AR (Access Right) byte in the Descriptor format
  2379.             Note:
  2380.                P bit is a valid bit
  2381.                if valid bit=0 then Shadow Register is invalid and
  2382.                   INT 0DH - General Protection Fault call
  2383.                DPL of SS,CS det. CPL
  2384.            2-3    0s
  2385.  
  2386. Flags Affected: All (FLAGS Register Reload)
  2387.  
  2388. CPU mode: RM,PM0
  2389.  
  2390. Physical Form:         LOADALL
  2391. COP (Code of Operation): 0FH 07H
  2392. Clocks:          i386XX   : n/a
  2393.           i486XX   : n/a
  2394.  
  2395. Note: This operation used 102 data transfer cycles on 32bit bus
  2396.       Typical clocks:
  2397.           i386SX: ~350
  2398.           i386DX: ~290
  2399.           i486XX: ~220
  2400.  
  2401. ----------O-LOADALL--------------------------------
  2402. OPCODE LOADALL    - Load All Registers From Table
  2403.  
  2404. CPU:  Intel 80286 and all its clones
  2405. Type of Instruction: System
  2406.             (Work only then CPL=0)
  2407.  
  2408. Instruction: LOADALL
  2409.  
  2410. Description:
  2411.           Load All Registers (Include Shadow Registers) from Table
  2412.           Which Begin on  000800H  Address, Len of this table is
  2413.           66H
  2414.  
  2415. Format of LOADALL Table:
  2416.     (Table )
  2417.            Address    Len  Description
  2418.         800H    6    None
  2419.         806H    2    MSW
  2420.         808H    14    None
  2421.         816H    2    TR
  2422.         818H    2    FLAGS
  2423.         81AH    2    IP
  2424.         81CH    2    LDTR
  2425.         81EH    2    DS
  2426.         820H    2    SS
  2427.         822H    2    CS
  2428.         824H    2    ES
  2429.         826H    2    DI
  2430.         828H    2    SI
  2431.         82AH    2    BP
  2432.         82CH    2    SP
  2433.         82EH    2    BX
  2434.         830H    2    DX
  2435.         832H    2    CX
  2436.         834H    2    AX
  2437.         836H    6    ES Shadow Descriptor
  2438.         83CH    6    CS Shadow Descriptor
  2439.         842H    6    SS Shadow Descriptor
  2440.         848H    6    DS Shadow Descriptor
  2441.         84EH    6    GDTR
  2442.         854H    6    LDT Shadow Descriptor
  2443.         85AH    6    IDTR
  2444.         860H    6    TSS Shadow Descriptor
  2445.  
  2446. Format    of Shadow Descriptor:
  2447.  
  2448.            Byte    Description
  2449.            0-2    24bit Phisical Address
  2450.         3    AR (Access Right) byte
  2451.            4-5    16bit Segment Limit
  2452.  
  2453. Format    of GDTR and IDTR:
  2454.  
  2455.            Byte    Description
  2456.            0-2    24bit Phisical Address
  2457.         3    0s
  2458.            4-5    16bit Segment Limit
  2459.  
  2460. Note: Using this instruction we may turn on "Big Real Mode" i.e. mode then
  2461. PG=1,PE=0,cpl=0. This mode very usefull,But Pentium never  support this
  2462. instruction.
  2463.  
  2464. Flags Affected: All (FLAGS Register Reload)
  2465.  
  2466. CPU mode: RM,PM0
  2467.  
  2468. Physical Form:         LOADALL
  2469. COP (Code of Operation): 0FH 05H
  2470. Clocks:          80286    : 195
  2471.  
  2472. ----------O-MOVD-----------------------------------
  2473. OPCODE MOVD   -     Move Dwords
  2474.  
  2475. CPU:  all which supported IA MMX:
  2476.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  2477. Type of Instruction: User
  2478.  
  2479. Instruction: MOVD  dest,src
  2480.  
  2481. Description:
  2482.  
  2483.     IF dest is MMi register THEN
  2484.     {
  2485.         dest[63..32] <- 0
  2486.         dest[31..0]  <- src
  2487.     } ELSE      ; If dest is DWORD
  2488.     dest <- src [31..0]
  2489.  
  2490. Note: This instruction moved DWORDs to/from MMX registers
  2491.  
  2492. Flags affected:     None
  2493.  
  2494. Exceptions:
  2495.  
  2496. RM    PM    VM    SMM    Description
  2497.     #GP(0)            If result in Non-Writable segment
  2498.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2499.     #SS(0)            If illegal memory operand's EA in SS
  2500.       #PF(fcode)        If page fault
  2501.     #AC    #AC        If unaligned memory reference then alignment
  2502.                 check enabled and in ring 3.
  2503. #UD    #UD    #UD    #UD    If CR0.EM = 1
  2504. #NM    #NM    #NM    #NM    If CR0.TS = 1
  2505. #MF    #MF    #MF    #MF    If pending FPU Exception
  2506.  
  2507. ++++++++++++++++++++++++++++++++++++++
  2508. COP & Times:
  2509.  
  2510. MOVD    mm,r/m32    0FH 6EH    PostByte
  2511. MOVD    r/m32,mm    0Fh 7Eh    PostByte
  2512.  
  2513.             mm,r/m32   r/m32,mm
  2514.      P55C:    n/a    (~1)       (~1)
  2515. future P6:    n/a    (~1)       (~1)
  2516.  
  2517. ----------O-MOVQ-----------------------------------
  2518. OPCODE MOVQ   -     Move Qwords
  2519.  
  2520. CPU:  all which supported IA MMX:
  2521.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  2522. Type of Instruction: User
  2523.  
  2524. Instruction: MOVQ  dest,src
  2525.  
  2526. Description:
  2527.  
  2528.     dest <- src
  2529.  
  2530. Note: This instruction moved QWORDs to/from MMX registers
  2531.       Of course, IA support Big-endian QWORDS.
  2532.  
  2533. Flags affected:     None
  2534.  
  2535. Exceptions:
  2536.  
  2537. RM    PM    VM    SMM    Description
  2538.     #GP(0)            If result in Non-Writable segment
  2539.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2540.     #SS(0)            If illegal memory operand's EA in SS
  2541.       #PF(fcode)        If page fault
  2542.     #AC    #AC        If unaligned memory reference then alignment
  2543.                 check enabled and in ring 3.
  2544. #UD    #UD    #UD    #UD    If CR0.EM = 1
  2545. #NM    #NM    #NM    #NM    If CR0.TS = 1
  2546. #MF    #MF    #MF    #MF    If pending FPU Exception
  2547.  
  2548. ++++++++++++++++++++++++++++++++++++++
  2549. COP & Times:
  2550.  
  2551. MOVQ    mm,mm/m64    0FH 6FH    PostByte
  2552. MOVQ    mm/m64,mm    0Fh 7Fh    PostByte
  2553.  
  2554. Note: In PostByte instead IU registers used MMX registers,
  2555.       0Fh 6Fh C0h means     MOVQ  MM0,MM0
  2556.  
  2557.             mm,r/m32   r/m32,mm
  2558.      P55C:    n/a    (~1)       (~1)
  2559. future P6:    n/a    (~1)       (~1)
  2560.  
  2561. ----------O-MOVSPA---------------------------------
  2562. OPCODE MOVSPA     -  Move Stack Pointer After Bank Switched
  2563.  
  2564. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  2565. Type of Instruction: System
  2566.  
  2567. Instruction:  MOVSPA
  2568.  
  2569. Description:  This instruction transfer     both SS and SP     of the old register
  2570.           bank to new register bank after the bank has been switched by
  2571.           interrupt or BRKCS instruction.
  2572.  
  2573. Flags Affected:     None
  2574.  
  2575. CPU mode: RM
  2576.  
  2577. +++++++++++++++++++++++
  2578. Physical Form:    MOVSPA
  2579. COP (Code of Operation)     : 0Fh 25h
  2580.  
  2581. Clocks:     16
  2582.  
  2583. ----------O-MOVSPB---------------------------------
  2584. OPCODE MOVSPB     -  Move Stack Pointer Before Bamk Switching
  2585.  
  2586. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  2587. Type of Instruction: System
  2588.  
  2589. Instruction:  MOVSPB  Number_of_bank
  2590.  
  2591. Description:  The MOVSPB instruction transfers the current SP and SS before
  2592.           the bank switching to new register bank.
  2593.  
  2594. Note:          New Register Bank Number indicated by lower 3bit of Number_of_
  2595.           _bank.
  2596.  
  2597. Note:          See BRKCS instruction for more info about banks.
  2598.  
  2599. Flags Affected:     None
  2600.  
  2601. CPU mode: RM
  2602.  
  2603. +++++++++++++++++++++++
  2604. Physical Form:    MOVSPB      reg16
  2605. COP (Code of Operation)     : 0Fh 95h <1111 1RRR>
  2606.  
  2607. Clocks:     11
  2608.  
  2609. ----------O-NOT1-----------------------------------
  2610. OPCODE NOT1  -    Invert a Specified bit
  2611.  
  2612. CPU: NEC/Sony  all  V-series
  2613. Type of Instruction: User
  2614.  
  2615. Instruction:  NOT1 dest,bitnumb
  2616.  
  2617. Description:
  2618.  
  2619.         (BIT bitnumb OF dest) <-  NOT (BIT bitnumb OF dest);
  2620.  
  2621. Flags Affected: None
  2622.  
  2623. CPU mode: RM
  2624.  
  2625. +++++++++++++++++++++++
  2626. Physical Form:           NOT1 reg/mem8,CL
  2627. COP (Code of Operation)     : 0FH 16H  Postbyte
  2628.  
  2629. Physical Form:           NOT1 reg/mem8,imm8
  2630. COP (Code of Operation)     : 0FH 1EH  Postbyte imm8
  2631.  
  2632. Physical Form:           NOT1 reg/mem16,CL
  2633. COP (Code of Operation)     : 0FH 17H  Postbyte
  2634.  
  2635. Physical Form:           NOT1 reg/mem16,imm8
  2636. COP (Code of Operation)     : 0FH 1FH  Postbyte  imm8
  2637.  
  2638. Clocks:                 NOT1
  2639.          r/m8,CL    r/m8,i8        r/m16,CL   r/m16,i8
  2640. NEC V20:      4/18     5/19          4/18         5/19
  2641.  
  2642. ----------O-OIO-----------------------------------
  2643. OPCODE OIO  -  Official Undefined Opcode
  2644.  
  2645. CPU:    Cyrix Cx6x86 (same code on AMD Am5k86)
  2646.  
  2647. Logical Form:    OIO
  2648.  
  2649. Description:
  2650.         Caused #UD exception
  2651.  
  2652. Flags Affected: No Flags Affected
  2653. CPU Mode : RM,PM,VM,VME,SMM
  2654.  
  2655. Exceptions :
  2656.     RM    PM    V86    VME    SMM
  2657.     #UD    #UD    #UD    #UD    #UD Undefined Instruction
  2658.     No more Exceptions
  2659.  
  2660. Note :
  2661.     This instruction caused #UD. AMD  guaranteed that in future AMD's
  2662.     CPUs this instruction will caused #UD. Of course all previous CPUs
  2663.     (186+) caused #UD on this opcode. This instruction used by software
  2664.     writers for testing #UD exception servise routine.
  2665.  
  2666. ++++++++++++++++++++++++++++++
  2667.  
  2668. Physical Form : UD
  2669.  
  2670. COP (Code of Operation) : 0Fh FFh
  2671.  
  2672. Clocks :    UD
  2673. 8088:    Not supported
  2674. NEC V20:    Not supported
  2675. 80186:    ~int
  2676. 80286:    ~int
  2677. 80386:    ~int
  2678. Cx486SLC:    ~int
  2679. i486:    ~int
  2680. Cx486DX:    ~int
  2681. Cx5x86:        ~int
  2682. Pentium:    ~int
  2683. Nx5x86:        ~int
  2684. Cx6x86:        ~int
  2685. Am5k86:        ~int
  2686. Pentium Pro:    ~int
  2687.  
  2688. ++++++++++++++++++++++++++++++
  2689.  
  2690. ----------O-PACKSSDW-------------------------------
  2691. OPCODE PACKSSDW      -  Pack with Signed Saturation dword to word
  2692.  
  2693. CPU:  all which supported IA MMX:
  2694.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  2695. Type of Instruction: User
  2696.  
  2697. Instruction: PACKSSDW  dest,src
  2698.  
  2699. Description:
  2700.  
  2701.     dest[15..0]    <-    SaturateSignedDWordToSignedWord dest[31..0]
  2702.     dest[31..16]    <-    SaturateSignedDWordToSignedWord dest[63..32]
  2703.     dest[47..32]    <-    SaturateSignedDWordToSignedWord src[31..0]
  2704.     dest[63..46]    <-    SaturateSignedDWordToSignedWord src[63..32]
  2705.  
  2706. Note: This instruction packs and saturates signed data from src and dest to
  2707.       dest.
  2708.       If signed value of word larger or smaller that the range of signed byte
  2709.       value is saturated (in case of overflow to 7Fh, in underflow to 80h).
  2710.  
  2711. Flags affected:     None
  2712.  
  2713. Exceptions:
  2714.  
  2715. RM    PM    VM    SMM    Description
  2716.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2717.     #SS(0)            If illegal memory operand's EA in SS
  2718.       #PF(fcode)        If page fault
  2719.     #AC    #AC        If unaligned memory reference then alignment
  2720.                 check enabled and in ring 3.
  2721. #UD    #UD    #UD    #UD    If CR0.EM = 1
  2722. #NM    #NM    #NM    #NM    If CR0.TS = 1
  2723. #MF    #MF    #MF    #MF    If pending FPU Exception
  2724.  
  2725. ++++++++++++++++++++++++++++++++++++++
  2726. COP & Times:
  2727.  
  2728. PACKSSDW mm,mm/m64    0FH 6BH    PostByte
  2729.  
  2730.      P55C:    n/a
  2731. future P6:    n/a
  2732.  
  2733. ----------O-PACKSSWB-------------------------------
  2734. OPCODE PACKSSWB      -  Pack with Signed Saturation word to Byte
  2735.  
  2736. CPU:  all which supported IA MMX:
  2737.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  2738. Type of Instruction: User
  2739.  
  2740. Instruction: PACKSSWB  dest,src
  2741.  
  2742. Description:
  2743.  
  2744.     dest[7..0]    <-    SaturateSignedWordToSignedByte dest[15..0]
  2745.     dest[15..8]    <-    SaturateSignedWordToSignedByte dest[31..16]
  2746.     dest[23..16]    <-    SaturateSignedWordToSignedByte dest[47..32]
  2747.     dest[31..24]    <-    SaturateSignedWordToSignedByte dest[63..48]
  2748.     dest[39..32]    <-    SaturateSignedWordToSignedByte src[15..0]
  2749.     dest[47..40]    <-    SaturateSignedWordToSignedByte src[31..16]
  2750.     dest[55..48]    <-    SaturateSignedWordToSignedByte src[47..32]
  2751.     dest[63..56]    <-    SaturateSignedWordToSignedByte src[63..48]
  2752.  
  2753. Note: This instruction packs and saturates signed data from src and dest to
  2754.       dest
  2755.  
  2756. Flags affected:     None
  2757.  
  2758. Exceptions:
  2759.  
  2760. RM    PM    VM    SMM    Description
  2761.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2762.     #SS(0)            If illegal memory operand's EA in SS
  2763.       #PF(fcode)        If page fault
  2764.     #AC    #AC        If unaligned memory reference then alignment
  2765.                 check enabled and in ring 3.
  2766. #UD    #UD    #UD    #UD    If CR0.EM = 1
  2767. #NM    #NM    #NM    #NM    If CR0.TS = 1
  2768. #MF    #MF    #MF    #MF    If pending FPU Exception
  2769.  
  2770. ++++++++++++++++++++++++++++++++++++++
  2771. COP & Times:
  2772.  
  2773. PACKSSWB mm,mm/m64    0FH 63H    PostByte
  2774.  
  2775.      P55C:    n/a
  2776. future P6:    n/a
  2777.  
  2778. ----------O-PACKUSWB-------------------------------
  2779. OPCODE PACKUSWB      -  Pack with Unsigned Saturation word to Byte
  2780.  
  2781. CPU:  all which supported IA MMX:
  2782.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  2783. Type of Instruction: User
  2784.  
  2785. Instruction: PACKUSWB  dest,src
  2786.  
  2787. Description:
  2788.  
  2789.     dest[7..0]    <-    SaturateSignedWordToUnSignedByte dest[15..0]
  2790.     dest[15..8]    <-    SaturateSignedWordToUnSignedByte dest[31..16]
  2791.     dest[23..16]    <-    SaturateSignedWordToUnSignedByte dest[47..32]
  2792.     dest[31..24]    <-    SaturateSignedWordToUnSignedByte dest[63..48]
  2793.     dest[39..32]    <-    SaturateSignedWordToUnSignedByte src[15..0]
  2794.     dest[47..40]    <-    SaturateSignedWordToUnSignedByte src[31..16]
  2795.     dest[55..48]    <-    SaturateSignedWordToUnSignedByte src[47..32]
  2796.     dest[63..56]    <-    SaturateSignedWordToUnSignedByte src[63..48]
  2797.  
  2798. Note:  If signed value of word larger or smaller that the range of unsigned
  2799.        byte, value is saturated (if overflow to FFh, if underflow to 0h).
  2800.  
  2801. Flags affected:     None
  2802.  
  2803. Exceptions:
  2804.  
  2805. RM    PM    VM    SMM    Description
  2806.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2807.     #SS(0)            If illegal memory operand's EA in SS
  2808.       #PF(fcode)        If page fault
  2809.     #AC    #AC        If unaligned memory reference then alignment
  2810.                 check enabled and in ring 3.
  2811. #UD    #UD    #UD    #UD    If CR0.EM = 1
  2812. #NM    #NM    #NM    #NM    If CR0.TS = 1
  2813. #MF    #MF    #MF    #MF    If pending FPU Exception
  2814.  
  2815. ++++++++++++++++++++++++++++++++++++++
  2816. COP & Times:
  2817.  
  2818. PACKUSWB mm,mm/m64    0FH 67H    PostByte
  2819.  
  2820.      P55C:    n/a
  2821. future P6:    n/a
  2822.  
  2823. ----------O-PADDB----------------------------------
  2824. OPCODE PADDB    -  Packed Add Bytes
  2825.  
  2826. CPU:  all which supported IA MMX:
  2827.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  2828. Type of Instruction: User
  2829.  
  2830. Instruction: PADDB  dest,src
  2831.  
  2832. Description:
  2833.  
  2834.     dest[7..0]    <-    dest[7..0]   + src[7..0]
  2835.     dest[15..8]    <-    dest[15..8]  + src[15..8]
  2836.     dest[23..16]    <-    dest[23..16] + src[23..16]
  2837.     dest[31..24]    <-    dest[31..24] + src[31..24]
  2838.     dest[39..32]    <-    dest[39..32] + src[39..32]
  2839.     dest[47..40]    <-    dest[47..40] + src[47..40]
  2840.     dest[55..48]    <-    dest[55..48] + src[55..48]
  2841.     dest[63..56]    <-    dest[63..56] + src[63..56]
  2842.  
  2843. Note:      This instruction adds the bytes of the source to the bytes of the
  2844.     destination and writes the results to the MMX register.
  2845.     When the result is too large to be represented in a packed byte
  2846.     (overflow), the result wraps around and the lower 8 bits are writen to
  2847.     the destination register.
  2848.  
  2849. Flags affected:     None
  2850.  
  2851. Exceptions:
  2852.  
  2853. RM    PM    VM    SMM    Description
  2854.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2855.     #SS(0)            If illegal memory operand's EA in SS
  2856.       #PF(fcode)        If page fault
  2857.     #AC    #AC        If unaligned memory reference then alignment
  2858.                 check enabled and in ring 3.
  2859. #UD    #UD    #UD    #UD    If CR0.EM = 1
  2860. #NM    #NM    #NM    #NM    If CR0.TS = 1
  2861. #MF    #MF    #MF    #MF    If pending FPU Exception
  2862. #13        #13        If any part of the the operand lies outside of
  2863.                 the EA space from 0 to FFFFH
  2864. ++++++++++++++++++++++++++++++++++++++
  2865. COP & Times:
  2866.  
  2867. PADDB    mm,mm/m64    0FH FCH    PostByte
  2868.  
  2869.      P55C:    n/a
  2870. future P6:    n/a
  2871.  
  2872. ----------O-PADDD----------------------------------
  2873. OPCODE PADDD    -  Packed Add Dwords
  2874.  
  2875. CPU:  all which supported IA MMX:
  2876.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  2877. Type of Instruction: User
  2878.  
  2879. Instruction: PADDD  dest,src
  2880.  
  2881. Description:
  2882.  
  2883.     dest[31..0]    <-    dest[31..0]  + src[31..0]
  2884.     dest[63..32]    <-    dest[63..32] + src[63..32]
  2885.  
  2886. Note:      This instruction adds the dwords of the source to the dwords of the
  2887.     destination and writes the results to the MMX register.
  2888.     When the result is too large to be represented in a packed dword
  2889.     (overflow), the result wraps around and the lower 32 bits are writen to
  2890.     the destination register.
  2891.  
  2892. Flags affected:     None
  2893.  
  2894. Exceptions:
  2895.  
  2896. RM    PM    VM    SMM    Description
  2897.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2898.     #SS(0)            If illegal memory operand's EA in SS
  2899.       #PF(fcode)        If page fault
  2900.     #AC    #AC        If unaligned memory reference then alignment
  2901.                 check enabled and in ring 3.
  2902. #UD    #UD    #UD    #UD    If CR0.EM = 1
  2903. #NM    #NM    #NM    #NM    If CR0.TS = 1
  2904. #MF    #MF    #MF    #MF    If pending FPU Exception
  2905. #13        #13        If any part of the the operand lies outside of
  2906.                 the EA space from 0 to FFFFH
  2907. ++++++++++++++++++++++++++++++++++++++
  2908. COP & Times:
  2909.  
  2910. PADDW    mm,mm/m64    0FH FEH    PostByte
  2911.  
  2912.      P55C:    n/a
  2913. future P6:    n/a
  2914.  
  2915. ----------O-PADDSB---------------------------------
  2916. OPCODE PADDSB    -  Packed Add with Saturation Bytes
  2917.  
  2918. CPU:  all which supported IA MMX:
  2919.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  2920. Type of Instruction: User
  2921.  
  2922. Instruction: PADDSB  dest,src
  2923.  
  2924. Description:
  2925.  
  2926.     dest[7..0]    <-    SaturateToSignedByte(dest[7..0]      + src[7..0])
  2927.     dest[15..8]    <-    SaturateToSignedByte(dest[15..8]  + src[15..8])
  2928.     dest[23..16]    <-    SaturateToSignedByte(dest[23..16] + src[23..16])
  2929.     dest[31..24]    <-    SaturateToSignedByte(dest[31..24] + src[31..24])
  2930.     dest[39..32]    <-    SaturateToSignedByte(dest[39..32] + src[39..32])
  2931.     dest[47..40]    <-    SaturateToSignedByte(dest[47..40] + src[47..40])
  2932.     dest[55..48]    <-    SaturateToSignedByte(dest[55..48] + src[55..48])
  2933.     dest[63..56]    <-    SaturateToSignedByte(dest[63..56] + src[63..56])
  2934.  
  2935. Note:      This instruction adds the signed bytes of the source to the bytes of
  2936.     the destination and writes the results to the MMX register.
  2937.       If the result is larger or smaller than the range of a signed byte,
  2938.     the value is saturated (in the case of a overflow - to 7FH, and in the
  2939.     case of an underflow - to 80H).
  2940.  
  2941. Flags affected:     None
  2942.  
  2943. Exceptions:
  2944.  
  2945. RM    PM    VM    SMM    Description
  2946.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2947.     #SS(0)            If illegal memory operand's EA in SS
  2948.       #PF(fcode)        If page fault
  2949.     #AC    #AC        If unaligned memory reference then alignment
  2950.                 check enabled and in ring 3.
  2951. #UD    #UD    #UD    #UD    If CR0.EM = 1
  2952. #NM    #NM    #NM    #NM    If CR0.TS = 1
  2953. #MF    #MF    #MF    #MF    If pending FPU Exception
  2954. #13        #13        If any part of the the operand lies outside of
  2955.                 the EA space from 0 to FFFFH
  2956. ++++++++++++++++++++++++++++++++++++++
  2957. COP & Times:
  2958.  
  2959. PADDSB    mm,mm/m64    0FH ECH    PostByte
  2960.  
  2961.      P55C:    n/a
  2962. future P6:    n/a
  2963.  
  2964. ----------O-PADDSIW----------------------------
  2965. OPCODE PADDSIW    - Packed Add with Saturation, using Implied Destination
  2966.  
  2967. CPU: Cyrix with Extended MMX Instruction Set
  2968. Type of Instruction: User
  2969.  
  2970. Instruction:    PADDSIW    dest, src
  2971.  
  2972. Description:
  2973.     dest[15..0]    <-    SaturateToSignedWord(dest[15..0] + src[15..0]
  2974.     dest[31..16]    <-    SaturateToSignedWord(dest[31..16] + src[31..16]
  2975.     dest[47..32]    <-    SaturateToSignedWord(dest[47..32] + src[47..32]
  2976.     dest[63..48]    <-    SaturateToSignedWord(dest[63..48] + src[63..48]
  2977.  
  2978. Notes:        This instruction adds the signed words of the source operand to
  2979.     the signed words of the destination operand and writes the results to
  2980.     the implied MMX register. The purpose of this instruction is the same
  2981.     as the PADDSW instruction, except that it preserves both source
  2982.     operands.
  2983.         The DEST must be an MMX register. The SRC can be  either an MMX
  2984.     register or a 64-bit memory operand. The destination is an MMX register
  2985.     which depends on the DEST.
  2986.  
  2987. Flags Affected:    None
  2988.  
  2989. Exceptions:
  2990.  
  2991. RM    PM    VM    SMM    Description
  2992.     #GP(0)            If Illegal memory operands EA in CS,DS,ES,FS,GS
  2993.     #SS(0)            If Illegal memory operands EA in SS
  2994.       #PF(fcode)        If page fault
  2995.     #AC    #AC        If unaligned memory reference then alignment
  2996.                 check enabled and in ring 3.
  2997. #UD    #UD    #UD    #UD    If CR0.EM = 1
  2998. #NM    #NM    #NM    #NM    If CR0.TS = 1
  2999. #MF    #MF    #MF    #MF    If pending FPU Exception
  3000. #13        #13        If any part of the operand lies outside of the
  3001.                 EA space from 0 to FFFFH
  3002. ++++++++++++++++++++++++++++++++++
  3003. COP & Times:
  3004.  
  3005. PADDSIW    mm,mm/m64    0FH 51H PostByte
  3006.  
  3007. ----------O-PADDSW---------------------------------
  3008. OPCODE PADDSW    -  Packed Add with Saturation Words
  3009.  
  3010. CPU:  all which supported IA MMX:
  3011.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  3012. Type of Instruction: User
  3013.  
  3014. Instruction: PADDSW  dest,src
  3015.  
  3016. Description:
  3017.  
  3018.     dest[15..0]    <-    SaturateToSignedWord(dest[15..0]  + src[15..0])
  3019.     dest[31..16]    <-    SaturateToSignedWord(dest[31..16] + src[31..16])
  3020.     dest[47..32]    <-    SaturateToSignedWord(dest[47..32] + src[47..32])
  3021.     dest[63..48]    <-    SaturateToSignedWord(dest[63..48] + src[63..48])
  3022.  
  3023. Note:      This instruction adds the signed words of the source to the words of
  3024.     the destination and writes the results to the MMX register.
  3025.       If the result is larger or smaller than the range of a signed word,
  3026.     the value is saturated (in the case of a overflow - to 7FFFH, and in
  3027.     the case of an underflow - to 8000H).
  3028.  
  3029. Flags affected:     None
  3030.  
  3031. Exceptions:
  3032.  
  3033. RM    PM    VM    SMM    Description
  3034.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3035.     #SS(0)            If illegal memory operand's EA in SS
  3036.       #PF(fcode)        If page fault
  3037.     #AC    #AC        If unaligned memory reference then alignment
  3038.                 check enabled and in ring 3.
  3039. #UD    #UD    #UD    #UD    If CR0.EM = 1
  3040. #NM    #NM    #NM    #NM    If CR0.TS = 1
  3041. #MF    #MF    #MF    #MF    If pending FPU Exception
  3042. #13        #13        If any part of the the operand lies outside of
  3043.                 the EA space from 0 to FFFFH
  3044. ++++++++++++++++++++++++++++++++++++++
  3045. COP & Times:
  3046.  
  3047. PADDSW    mm,mm/m64    0FH EDH    PostByte
  3048.  
  3049.      P55C:    n/a
  3050. future P6:    n/a
  3051.  
  3052. ----------O-PADDUSB--------------------------------
  3053. OPCODE PADDUSB    -  Packed Add Unsigned with Saturation Bytes
  3054.  
  3055. CPU:  all which supported IA MMX:
  3056.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  3057. Type of Instruction: User
  3058.  
  3059. Instruction: PADDUSB  dest,src
  3060.  
  3061. Description:
  3062.  
  3063.     dest[7..0]    <-   SaturateToUnsignedByte(dest[7..0]     + src[7..0])
  3064.     dest[15..8]    <-   SaturateToUnsignedByte(dest[15..8]     + src[15..8])
  3065.     dest[23..16]    <-   SaturateToUnsignedByte(dest[23..16] + src[23..16])
  3066.     dest[31..24]    <-   SaturateToUnsignedByte(dest[31..24] + src[31..24])
  3067.     dest[39..32]    <-   SaturateToUnsignedByte(dest[39..32] + src[39..32])
  3068.     dest[47..40]    <-   SaturateToUnsignedByte(dest[47..40] + src[47..40])
  3069.     dest[55..48]    <-   SaturateToUnsignedByte(dest[55..48] + src[55..48])
  3070.     dest[63..56]    <-   SaturateToUnsignedByte(dest[63..56] + src[63..56])
  3071.  
  3072. Note:      This instruction adds the unsigned bytes of the source to the
  3073.     unsigned bytes of the destination operand and writes the results to the
  3074.     MMX register.
  3075.       When the result is larger than the range of an unsigned byte
  3076.     (overflow), the value is saturated to FFH. When the result is smaller
  3077.     than the range of an unsigned byte (underflow), the value is saturated
  3078.     to 00H.
  3079.  
  3080. Flags affected:     None
  3081.  
  3082. Exceptions:
  3083.  
  3084. RM    PM    VM    SMM    Description
  3085.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3086.     #SS(0)            If illegal memory operand's EA in SS
  3087.       #PF(fcode)        If page fault
  3088.     #AC    #AC        If unaligned memory reference then alignment
  3089.                 check enabled and in ring 3.
  3090. #UD    #UD    #UD    #UD    If CR0.EM = 1
  3091. #NM    #NM    #NM    #NM    If CR0.TS = 1
  3092. #MF    #MF    #MF    #MF    If pending FPU Exception
  3093. #13        #13        If any part of the the operand lies outside of
  3094.                 the EA space from 0 to FFFFH
  3095. ++++++++++++++++++++++++++++++++++++++
  3096. COP & Times:
  3097.  
  3098. PADDUSB    mm,mm/m64    0FH DCH    PostByte
  3099.  
  3100.      P55C:    n/a
  3101. future P6:    n/a
  3102.  
  3103. ----------O-PADDUSW--------------------------------
  3104. OPCODE PADDUSW    -  Packed Add Unsigned with Saturation Words
  3105.  
  3106. CPU:  all which supported IA MMX:
  3107.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  3108. Type of Instruction: User
  3109.  
  3110. Instruction: PADDUSW  dest,src
  3111.  
  3112. Description:
  3113.  
  3114.     dest[15..0]    <-   SaturateToUnsignedWord(dest[15..0]     + src[15..0])
  3115.     dest[31..16]    <-   SaturateToUnsignedWord(dest[31..16] + src[31..16])
  3116.     dest[47..32]    <-   SaturateToUnsignedWord(dest[47..32] + src[47..32])
  3117.     dest[63..48]    <-   SaturateToUnsignedWord(dest[63..48] + src[63..48])
  3118.  
  3119. Note:      This instruction adds the unsigned words of the source to the
  3120.     unsigned words of the destination operand and writes the results to the
  3121.     MMX register.
  3122.       When the result is larger than the range of an unsigned word
  3123.     (overflow), the value is saturated to FFFFH. When the result is smaller
  3124.     than the range of an unsigned byte (underflow), the value is saturated
  3125.     to 0000H.
  3126.  
  3127. Flags affected:     None
  3128.  
  3129. Exceptions:
  3130.  
  3131. RM    PM    VM    SMM    Description
  3132.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3133.     #SS(0)            If illegal memory operand's EA in SS
  3134.       #PF(fcode)        If page fault
  3135.     #AC    #AC        If unaligned memory reference then alignment
  3136.                 check enabled and in ring 3.
  3137. #UD    #UD    #UD    #UD    If CR0.EM = 1
  3138. #NM    #NM    #NM    #NM    If CR0.TS = 1
  3139. #MF    #MF    #MF    #MF    If pending FPU Exception
  3140. #13        #13        If any part of the the operand lies outside of
  3141.                 the EA space from 0 to FFFFH
  3142. ++++++++++++++++++++++++++++++++++++++
  3143. COP & Times:
  3144.  
  3145. PADDUSW    mm,mm/m64    0FH DDH    PostByte
  3146.  
  3147.      P55C:    n/a
  3148. future P6:    n/a
  3149.  
  3150. ----------O-PADDW----------------------------------
  3151. OPCODE PADDW    -  Packed Add Words
  3152.  
  3153. CPU:  all which supported IA MMX:
  3154.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  3155. Type of Instruction: User
  3156.  
  3157. Instruction: PADDW  dest,src
  3158.  
  3159. Description:
  3160.  
  3161.     dest[15..0]    <-    dest[15..0]  + src[15..0]
  3162.     dest[31..16]    <-    dest[31..16] + src[31..16]
  3163.     dest[47..32]    <-    dest[47..32] + src[47..32]
  3164.     dest[63..48]    <-    dest[63..48] + src[63..48]
  3165.  
  3166. Note:      This instruction adds the words of the source to the words of the
  3167.     destination and writes the results to the MMX register.
  3168.       When the result is too large to be represented in a packed word
  3169.     (overflow), the result wraps around and the lower 16 bits are writen to
  3170.     the destination register.
  3171.  
  3172. Flags affected:     None
  3173.  
  3174. Exceptions:
  3175.  
  3176. RM    PM    VM    SMM    Description
  3177.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3178.     #SS(0)            If illegal memory operand's EA in SS
  3179.       #PF(fcode)        If page fault
  3180.     #AC    #AC        If unaligned memory reference then alignment
  3181.                 check enabled and in ring 3.
  3182. #UD    #UD    #UD    #UD    If CR0.EM = 1
  3183. #NM    #NM    #NM    #NM    If CR0.TS = 1
  3184. #MF    #MF    #MF    #MF    If pending FPU Exception
  3185. #13        #13        If any part of the the operand lies outside of
  3186.                 the EA space from 0 to FFFFH
  3187. ++++++++++++++++++++++++++++++++++++++
  3188. COP & Times:
  3189.  
  3190. PADDW    mm,mm/m64    0FH FDH    PostByte
  3191.  
  3192.      P55C:    n/a
  3193. future P6:    n/a
  3194.  
  3195. ----------O-PAND-----------------------------------
  3196. OPCODE PAND    -  Bitwise Logical And
  3197.  
  3198. CPU:  all which supported IA MMX:
  3199.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  3200. Type of Instruction: User
  3201.  
  3202. Instruction: PAND  dest,src
  3203.  
  3204. Description:
  3205.  
  3206.     dest    <-   dest AND src
  3207.  
  3208. Note:      AND 64 bits from MMXregister/memory to MMX register.
  3209.  
  3210. Flags affected:     None
  3211.  
  3212. Exceptions:
  3213.  
  3214. RM    PM    VM    SMM    Description
  3215.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3216.     #SS(0)            If illegal memory operand's EA in SS
  3217.       #PF(fcode)        If page fault
  3218.     #AC    #AC        If unaligned memory reference then alignment
  3219.                 check enabled and in ring 3.
  3220. #UD    #UD    #UD    #UD    If CR0.EM = 1
  3221. #NM    #NM    #NM    #NM    If CR0.TS = 1
  3222. #MF    #MF    #MF    #MF    If pending FPU Exception
  3223. #13        #13        If any part of the the operand lies outside of
  3224.                 the EA space from 0 to FFFFH
  3225. ++++++++++++++++++++++++++++++++++++++
  3226. COP & Times:
  3227.  
  3228. PAND    mm,mm/m64    0FH DBH    PostByte
  3229.  
  3230.      P55C:    n/a
  3231. future P6:    n/a
  3232.  
  3233. ----------O-PANDN----------------------------------
  3234. OPCODE PANDN    -  Bitwise Logical And Not
  3235.  
  3236. CPU:  all which supported IA MMX:
  3237.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  3238. Type of Instruction: User
  3239.  
  3240. Instruction: PANDN  dest,src
  3241.  
  3242. Description:
  3243.  
  3244.     dest    <-   (NOT dest) AND src
  3245.  
  3246. Note:      Invert the 64 bits in MMX register, AND inverted MMX register with
  3247.     MMXregister/memory.
  3248.  
  3249. Flags affected:     None
  3250.  
  3251. Exceptions:
  3252.  
  3253. RM    PM    VM    SMM    Description
  3254.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3255.     #SS(0)            If illegal memory operand's EA in SS
  3256.       #PF(fcode)        If page fault
  3257.     #AC    #AC        If unaligned memory reference then alignment
  3258.                 check enabled and in ring 3.
  3259. #UD    #UD    #UD    #UD    If CR0.EM = 1
  3260. #NM    #NM    #NM    #NM    If CR0.TS = 1
  3261. #MF    #MF    #MF    #MF    If pending FPU Exception
  3262. #13        #13        If any part of the the operand lies outside of
  3263.                 the EA space from 0 to FFFFH
  3264. ++++++++++++++++++++++++++++++++++++++
  3265. COP & Times:
  3266.  
  3267. PANDN    mm,mm/m64    0FH DFH    PostByte
  3268.  
  3269.      P55C:    n/a
  3270. future P6:    n/a
  3271.  
  3272. ----------O-PAVEB------------------------------
  3273. OPCODE PAVEB    - Packed Average
  3274.  
  3275. CPU: Cyrix with Extended MMX Instruction Set
  3276. Type of Instruction: User
  3277.  
  3278. Instruction:    PAVEB    dest, src
  3279.  
  3280. Description:
  3281.     dest[7..0]    <-    (dest[7..0] + src[7..0]) >> 1
  3282.     dest[15..8]    <-    (dest[15..8] + src[15..8]) >> 1
  3283.     dest[23..16]    <-    (dest[23..16] + src[23..16]) >> 1
  3284.     dest[31..24]    <-    (dest[31..24] + src[31..24]) >> 1
  3285.     dest[39..32]    <-    (dest[39..32] + src[39..32]) >> 1
  3286.     dest[47..40]    <-    (dest[47..40] + src[47..40]) >> 1
  3287.     dest[55..48]    <-    (dest[55..48] + src[55..48]) >> 1
  3288.     dest[63..56]    <-    (dest[63..56] + src[63..56]) >> 1
  3289.  
  3290. Notes:        The PAVEB insruction calculates the average of the unsigned
  3291.     bytes of the source operand and the unsigned bytes of the destination
  3292.     operand and writes the result to the MMX register. The PAVEB
  3293.     instruction cannot overflow.
  3294.         M2 hardware versions before v1.3 interpret values as signed
  3295.     bytes on this instruction.
  3296.  
  3297. Flags Affected:    None
  3298.  
  3299.     Exceptions:
  3300.  
  3301. RM    PM    VM    SMM    Description
  3302.     #GP(0)            If Illegal memory operands EA in CS,DS,ES,FS,GS
  3303.     #SS(0)            If Illegal memory operands EA in SS
  3304.       #PF(fcode)        If page fault
  3305.     #AC    #AC        If unaligned memory reference then alignment
  3306.                 check enabled and in ring 3.
  3307. #UD    #UD    #UD    #UD    If CR0.EM = 1
  3308. #NM    #NM    #NM    #NM    If CR0.TS = 1
  3309. #MF    #MF    #MF    #MF    If pending FPU Exception
  3310. #13        #13        If any part of the operand lies outside of the
  3311.                 EA space from 0 to FFFFH
  3312. ++++++++++++++++++++++++++++++++++
  3313. COP & Times:
  3314.  
  3315. PAVEB    mm,mm/m64    0FH 50H PostByte
  3316.  
  3317. ----------O-PAVGUSB----------------------------
  3318. OPCODE PAVGUSB    -    Avarage of Unsigned packed 8-bit Values
  3319.  
  3320. CPU: AMD-3D
  3321. Type of Instruction: User
  3322.  
  3323. Instruction:    PAVGUSB dest,src
  3324.  
  3325. Description:
  3326.  
  3327.     dest[7..0] <- (dest[7..0] + src[7..0]) / 2;
  3328.     dest[15..8] <- (dest[15..8] + src[15..8]) / 2;
  3329.     dest[23..16] <- (dest[23..16] + src[23..16]) / 2;
  3330.     dest[31..24] <- (dest[31..24] + src[31..24]) / 2;
  3331.     dest[39..32] <- (dest[39..32] + src[39..32]) / 2;
  3332.     dest[47..40] <- (dest[47..40] + src[47..40]) / 2;
  3333.     dest[55..48] <- (dest[55..48] + src[55..48]) / 2;
  3334.     dest[63..56] <- (dest[63..56] + src[63..56]) / 2;
  3335.  
  3336. Note: so, saturation rounding:
  3337.     (FFH + FFH) / 2     =>  FFh
  3338.  
  3339. Flags Affected:    None
  3340.  
  3341. ++++++++++++++++++++++++++++++++++
  3342. COP & Times:
  3343.  
  3344. PAVGUSB    mm,mm/m64    0FH 0FH BFH Postbyte
  3345.  
  3346. ----------O-PCMPEQB--------------------------------
  3347. OPCODE PCMPEQB    -  Packed Compare for Equal Bytes
  3348.  
  3349. CPU:  all which supported IA MMX:
  3350.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  3351. Type of Instruction: User
  3352.  
  3353. Instruction: PCMPEQB  dest,src
  3354.  
  3355. Description:
  3356.  
  3357.     IF dest[7..0] = src[7..0]
  3358.         THEN
  3359.         dest[7..0] <- FFH
  3360.         ELSE
  3361.         dest[7..0] <- 00H
  3362.     IF dest[15..8] = src[15..8]
  3363.         THEN
  3364.         dest[15..8] <- FFH
  3365.         ELSE
  3366.         dest[15..8] <- 00H
  3367.     IF dest[23..16] = src[23..16]
  3368.         THEN
  3369.         dest[23..16] <- FFH
  3370.         ELSE
  3371.         dest[23..16] <- 00H
  3372.     IF dest[31..24] = src[31..24]
  3373.         THEN
  3374.         dest[31..24] <- FFH
  3375.         ELSE
  3376.         dest[31..24] <- 00H
  3377.     IF dest[39..32] = src[39..32]
  3378.         THEN
  3379.         dest[39..32] <- FFH
  3380.         ELSE
  3381.         dest[39..32] <- 00H
  3382.     IF dest[47..40] = src[47..40]
  3383.         THEN
  3384.         dest[47..40] <- FFH
  3385.         ELSE
  3386.         dest[47..40] <- 00H
  3387.     IF dest[55..48] = src[55..48]
  3388.         THEN
  3389.         dest[55..48] <- FFH
  3390.         ELSE
  3391.         dest[55..48] <- 00H
  3392.     IF dest[63..56] = src[63..56]
  3393.         THEN
  3394.         dest[63..56] <- FFH
  3395.         ELSE
  3396.         dest[63..56] <- 00H
  3397.  
  3398. Note:      Compare packed byte in MMXregister/memory with packed byte in MMX
  3399.     register for equality.
  3400.  
  3401. Flags affected:     None
  3402.  
  3403. Exceptions:
  3404.  
  3405. RM    PM    VM    SMM    Description
  3406.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3407.     #SS(0)            If illegal memory operand's EA in SS
  3408.       #PF(fcode)        If page fault
  3409.     #AC    #AC        If unaligned memory reference then alignment
  3410.                 check enabled and in ring 3.
  3411. #UD    #UD    #UD    #UD    If CR0.EM = 1
  3412. #NM    #NM    #NM    #NM    If CR0.TS = 1
  3413. #MF    #MF    #MF    #MF    If pending FPU Exception
  3414. #13        #13        If any part of the the operand lies outside of
  3415.                 the EA space from 0 to FFFFH
  3416. ++++++++++++++++++++++++++++++++++++++
  3417. COP & Times:
  3418.  
  3419. PCMPEQB    mm,mm/m64    0FH 74H    PostByte
  3420.  
  3421.      P55C:    n/a
  3422. future P6:    n/a
  3423.  
  3424. ----------O-PCMPEQD--------------------------------
  3425. OPCODE PCMPEQD    -  Packed Compare for Equal Dwords
  3426.  
  3427. CPU:  all which supported IA MMX:
  3428.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  3429. Type of Instruction: User
  3430.  
  3431. Instruction: PCMPEQD dest,src
  3432.  
  3433. Description:
  3434.  
  3435.     IF dest[31..0] = src[31..0]
  3436.         THEN
  3437.         dest[31..0] <- FFFFFFFFH
  3438.         ELSE
  3439.         dest[31..0] <- 00000000H
  3440.     IF dest[63..32] = src[63..32]
  3441.         THEN
  3442.         dest[63..32] <- FFFFFFFFH
  3443.         ELSE
  3444.         dest[63..32] <- 00000000H
  3445.  
  3446. Note:      Compare packed dword in MMXregister/memory with packed dword in MMX
  3447.     register for equality.
  3448.  
  3449. Flags affected:     None
  3450.  
  3451. Exceptions:
  3452.  
  3453. RM    PM    VM    SMM    Description
  3454.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3455.     #SS(0)            If illegal memory operand's EA in SS
  3456.       #PF(fcode)        If page fault
  3457.     #AC    #AC        If unaligned memory reference then alignment
  3458.                 check enabled and in ring 3.
  3459. #UD    #UD    #UD    #UD    If CR0.EM = 1
  3460. #NM    #NM    #NM    #NM    If CR0.TS = 1
  3461. #MF    #MF    #MF    #MF    If pending FPU Exception
  3462. #13        #13        If any part of the the operand lies outside of
  3463.                 the EA space from 0 to FFFFH
  3464. ++++++++++++++++++++++++++++++++++++++
  3465. COP & Times:
  3466.  
  3467. PCMPEQW    mm,mm/m64    07H 76H    PostByte
  3468.  
  3469.      P55C:    n/a
  3470. future P6:    n/a
  3471.  
  3472. ----------O-PCMPEQW--------------------------------
  3473. OPCODE PCMPEQW    -  Packed Compare for Equal Words
  3474.  
  3475. CPU:  all which supported IA MMX:
  3476.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  3477. Type of Instruction: User
  3478.  
  3479. Instruction: PCMPEQW dest,src
  3480.  
  3481. Description:
  3482.  
  3483.     IF dest[15..0] = src[15..0]
  3484.         THEN
  3485.         dest[15..0] <- FFFFH
  3486.         ELSE
  3487.         dest[15..0] <- 0000H
  3488.     IF dest[31..16] = src[31..16]
  3489.         THEN
  3490.         dest[31..16] <- FFFFH
  3491.         ELSE
  3492.         dest[31..16] <- 0000H
  3493.     IF dest[47..32] = src[47..32]
  3494.         THEN
  3495.         dest[47..32] <- FFFFH
  3496.         ELSE
  3497.         dest[47..32] <- 0000H
  3498.     IF dest[63..48] = src[63..48]
  3499.         THEN
  3500.         dest[63..48] <- FFFFH
  3501.         ELSE
  3502.         dest[63..48] <- 0000H
  3503.  
  3504. Note:      Compare packed word in MMXregister/memory with packed word in MMX
  3505.     register for equality.
  3506.  
  3507. Flags affected:     None
  3508.  
  3509. Exceptions:
  3510.  
  3511. RM    PM    VM    SMM    Description
  3512.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3513.     #SS(0)            If illegal memory operand's EA in SS
  3514.       #PF(fcode)        If page fault
  3515.     #AC    #AC        If unaligned memory reference then alignment
  3516.                 check enabled and in ring 3.
  3517. #UD    #UD    #UD    #UD    If CR0.EM = 1
  3518. #NM    #NM    #NM    #NM    If CR0.TS = 1
  3519. #MF    #MF    #MF    #MF    If pending FPU Exception
  3520. #13        #13        If any part of the the operand lies outside of
  3521.                 the EA space from 0 to FFFFH
  3522. ++++++++++++++++++++++++++++++++++++++
  3523. COP & Times:
  3524.  
  3525. PCMPEQW    mm,mm/m64    07H 75H    PostByte
  3526.  
  3527.      P55C:    n/a
  3528. future P6:    n/a
  3529.  
  3530. ----------O-PCMPGTB--------------------------------
  3531. OPCODE PCMPGTB    -  Packed Compare for Greater Than Bytes
  3532.  
  3533. CPU:  all which supported IA MMX:
  3534.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  3535. Type of Instruction: User
  3536.  
  3537. Instruction: PCMPGTB  dest,src
  3538.  
  3539. Description:
  3540.  
  3541.     IF dest[7..0] > src[7..0]
  3542.         THEN
  3543.         dest[7..0] <- FFH
  3544.         ELSE
  3545.         dest[7..0] <- 00H
  3546.     IF dest[15..8] > src[15..8]
  3547.         THEN
  3548.         dest[15..8] <- FFH
  3549.         ELSE
  3550.         dest[15..8] <- 00H
  3551.     IF dest[23..16] > src[23..16]
  3552.         THEN
  3553.         dest[23..16] <- FFH
  3554.         ELSE
  3555.         dest[23..16] <- 00H
  3556.     IF dest[31..24] > src[31..24]
  3557.         THEN
  3558.         dest[31..24] <- FFH
  3559.         ELSE
  3560.         dest[31..24] <- 00H
  3561.     IF dest[39..32] > src[39..32]
  3562.         THEN
  3563.         dest[39..32] <- FFH
  3564.         ELSE
  3565.         dest[39..32] <- 00H
  3566.     IF dest[47..40] > src[47..40]
  3567.         THEN
  3568.         dest[47..40] <- FFH
  3569.         ELSE
  3570.         dest[47..40] <- 00H
  3571.     IF dest[55..48] > src[55..48]
  3572.         THEN
  3573.         dest[55..48] <- FFH
  3574.         ELSE
  3575.         dest[55..48] <- 00H
  3576.     IF dest[63..56] > src[63..56]
  3577.         THEN
  3578.         dest[63..56] <- FFH
  3579.         ELSE
  3580.         dest[63..56] <- 00H
  3581.  
  3582. Note:      Compare packed byte in MMX register with packed byte in MMXregister/
  3583.     /memory for greater value.
  3584.  
  3585. Flags affected:     None
  3586.  
  3587. Exceptions:
  3588.  
  3589. RM    PM    VM    SMM    Description
  3590.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3591.     #SS(0)            If illegal memory operand's EA in SS
  3592.       #PF(fcode)        If page fault
  3593.     #AC    #AC        If unaligned memory reference then alignment
  3594.                 check enabled and in ring 3.
  3595. #UD    #UD    #UD    #UD    If CR0.EM = 1
  3596. #NM    #NM    #NM    #NM    If CR0.TS = 1
  3597. #MF    #MF    #MF    #MF    If pending FPU Exception
  3598. #13        #13        If any part of the the operand lies outside of
  3599.                 the EA space from 0 to FFFFH
  3600. ++++++++++++++++++++++++++++++++++++++
  3601. COP & Times:
  3602.  
  3603. PCMPGTB    mm,mm/m64    0FH 64H    PostByte
  3604.  
  3605.      P55C:    n/a
  3606. future P6:    n/a
  3607.  
  3608. ----------O-PCMPGTD--------------------------------
  3609. OPCODE PCMPGTD    -  Packed Compare for Greater Than Dwords
  3610.  
  3611. CPU:  all which supported IA MMX:
  3612.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  3613. Type of Instruction: User
  3614.  
  3615. Instruction: PCMPGTD dest,src
  3616.  
  3617. Description:
  3618.  
  3619.     IF dest[31..0] > src[31..0]
  3620.         THEN
  3621.         dest[31..0] <- FFFFFFFFH
  3622.         ELSE
  3623.         dest[31..0] <- 00000000H
  3624.     IF dest[63..32] > src[63..32]
  3625.         THEN
  3626.         dest[63..32] <- FFFFFFFFH
  3627.         ELSE
  3628.         dest[63..32] <- 00000000H
  3629.  
  3630. Note:      Compare packed dword in MMX register with packed dword in MMXregister/
  3631.     /memory for greater value.
  3632.  
  3633. Flags affected:     None
  3634.  
  3635. Exceptions:
  3636.  
  3637. RM    PM    VM    SMM    Description
  3638.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3639.     #SS(0)            If illegal memory operand's EA in SS
  3640.       #PF(fcode)        If page fault
  3641.     #AC    #AC        If unaligned memory reference then alignment
  3642.                 check enabled and in ring 3.
  3643. #UD    #UD    #UD    #UD    If CR0.EM = 1
  3644. #NM    #NM    #NM    #NM    If CR0.TS = 1
  3645. #MF    #MF    #MF    #MF    If pending FPU Exception
  3646. #13        #13        If any part of the the operand lies outside of
  3647.                 the EA space from 0 to FFFFH
  3648. ++++++++++++++++++++++++++++++++++++++
  3649. COP & Times:
  3650.  
  3651. PCMPGTW    mm,mm/m64    0FH 66H    PostByte
  3652.  
  3653.      P55C:    n/a
  3654. future P6:    n/a
  3655.  
  3656. ----------O-PCMPGTW--------------------------------
  3657. OPCODE PCMPGTW    -  Packed Compare for Greater Than Words
  3658.  
  3659. CPU:  all which supported IA MMX:
  3660.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  3661. Type of Instruction: User
  3662.  
  3663. Instruction: PCMPGTW dest,src
  3664.  
  3665. Description:
  3666.  
  3667.     IF dest[15..0] > src[15..0]
  3668.         THEN
  3669.         dest[15..0] <- FFFFH
  3670.         ELSE
  3671.         dest[15..0] <- 0000H
  3672.     IF dest[31..16] > src[31..16]
  3673.         THEN
  3674.         dest[31..16] <- FFFFH
  3675.         ELSE
  3676.         dest[31..16] <- 0000H
  3677.     IF dest[47..32] > src[47..32]
  3678.         THEN
  3679.         dest[47..32] <- FFFFH
  3680.         ELSE
  3681.         dest[47..32] <- 0000H
  3682.     IF dest[63..48] > src[63..48]
  3683.         THEN
  3684.         dest[63..48] <- FFFFH
  3685.         ELSE
  3686.         dest[63..48] <- 0000H
  3687.  
  3688. Note:      Compare packed word in MMX register with packed word in MMXregister/
  3689.     memory for greater value.
  3690.  
  3691. Flags affected:     None
  3692.  
  3693. Exceptions:
  3694.  
  3695. RM    PM    VM    SMM    Description
  3696.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3697.     #SS(0)            If illegal memory operand's EA in SS
  3698.       #PF(fcode)        If page fault
  3699.     #AC    #AC        If unaligned memory reference then alignment
  3700.                 check enabled and in ring 3.
  3701. #UD    #UD    #UD    #UD    If CR0.EM = 1
  3702. #NM    #NM    #NM    #NM    If CR0.TS = 1
  3703. #MF    #MF    #MF    #MF    If pending FPU Exception
  3704. #13        #13        If any part of the the operand lies outside of
  3705.                 the EA space from 0 to FFFFH
  3706. ++++++++++++++++++++++++++++++++++++++
  3707. COP & Times:
  3708.  
  3709. PCMPGTW    mm,mm/m64    0FH 65H    PostByte
  3710.  
  3711.      P55C:    n/a
  3712. future P6:    n/a
  3713.  
  3714. ----------O-PDISTIB----------------------------
  3715. OPCODE PDISTIB    - Packed Distance and Accumulate with Implied Register
  3716.  
  3717. CPU: Cyrix with Extended MMX Instruction Set
  3718. Type of Instruction: User
  3719.  
  3720. Instruction:    PDISTIB    dest, src
  3721.  
  3722. Description:
  3723.     dest[7..0]    <-
  3724. SaturateToUnsignedByte(dest[7..0] + abs(dest[7..0] - src[7..0]))
  3725.     dest[15..8]    <-
  3726. SaturateToUnsignedByte(dest[15..8] + abs(dest[15..8] - src[15..8]))
  3727.     dest[23..16]    <-
  3728. SaturateToUnsignedByte(dest[23..16] + abs(dest[23..16] - src[23..16]))
  3729.     dest[31..24]    <-
  3730. SaturateToUnsignedByte(dest[31..24] + abs(dest[31..24] - src[31..24]))
  3731.     dest[39..32]    <-
  3732. SaturateToUnsignedByte(dest[39..32] + abs(dest[39..32] - src[39..32]))
  3733.     dest[47..40]    <-
  3734. SaturateToUnsignedByte(dest[47..40] + abs(dest[47..40] - src[47..40]))
  3735.     dest[55..48]    <-
  3736. SaturateToUnsignedByte(dest[55..48] + abs(dest[55..48] - src[55..48]))
  3737.     dest[63..56]    <-
  3738. SaturateToUnsignedByte(dest[63..56] + abs(dest[63..56] - src[63..56]))
  3739.  
  3740. Notes:        The PDISTIB instruction calculates the distance between the
  3741.     unsigned bytes of two source operands, adds the result to the
  3742.     unsigned byte in the implied destination operand, and saturates the
  3743.     result. The result is written to the implied MMX register.
  3744.         The DEST must be an MMX register. The SRC must be a 64-bit
  3745.     memory operand. The accumulator and destination is an MMX register
  3746.     which depends on the DEST.
  3747.  
  3748. Flags Affected:    None
  3749.  
  3750.     Exceptions:
  3751.  
  3752. RM    PM    VM    SMM    Description
  3753.     #GP(0)            If Illegal memory operands EA in CS,DS,ES,FS,GS
  3754.     #SS(0)            If Illegal memory operands EA in SS
  3755.       #PF(fcode)        If page fault
  3756.     #AC    #AC        If unaligned memory reference then alignment
  3757.                 check enabled and in ring 3.
  3758. #UD    #UD    #UD    #UD    If CR0.EM = 1
  3759. #NM    #NM    #NM    #NM    If CR0.TS = 1
  3760. #MF    #MF    #MF    #MF    If pending FPU Exception
  3761. #13        #13        If any part of the operand lies outside of the
  3762.                 EA space from 0 to FFFFH
  3763. ++++++++++++++++++++++++++++++++++
  3764. COP & Times:
  3765.  
  3766. PDISTIB    mm,m64        0FH 54H PostByte
  3767.  
  3768. ----------O-PF2ID------------------------------
  3769. OPCODE PF2ID - Convert Packed F.P. to 32-bit Integer
  3770.  
  3771. CPU: AMD-3D
  3772. Type of Instruction: User
  3773.  
  3774. Instruction:    PF2ID dest,src
  3775.  
  3776. Description:
  3777.  
  3778.     if (src[31..0] >   2^31) then dest[31..0] <- 7FFFFFFFh;
  3779.     if (src[31..0] <= -2^31) then dest[31..0] <- 80000000h;
  3780.     dest[31..0] <- truncate(src[31..0]);
  3781.  
  3782.     if (src[63..32] >   2^31) then dest[63..32] <- 7FFFFFFFh;
  3783.     if (src[63..32] <= -2^31) then dest[63..32] <- 80000000h;
  3784.     dest[63..32] <- truncate(src[63..32]);
  3785.  
  3786. Flags Affected:    None
  3787.  
  3788. ++++++++++++++++++++++++++++++++++
  3789. COP & Times:
  3790.  
  3791. PF2ID    mm,mm/m64    0FH 0FH 1DH Postbyte
  3792.  
  3793. ----------O-PFACC------------------------------
  3794. OPCODE PFACC - F.P. Accumulate
  3795.  
  3796. CPU: AMD-3D
  3797. Type of Instruction: User
  3798.  
  3799. Instruction:    PFACC dest,src
  3800.  
  3801. Description:
  3802.  
  3803.     dest[31..0]  <- dest[31..0] + dest[63..32];
  3804.     dest[63..32] <- src[31..0]  + src [63..32];
  3805.  
  3806. Flags Affected:    None
  3807.  
  3808. ++++++++++++++++++++++++++++++++++
  3809. COP & Times:
  3810.  
  3811. PFACC mm,mm/m64    0FH 0FH AEH Postbyte
  3812.  
  3813. ----------O-PFADD------------------------------
  3814. OPCODE PFADD    - Packed F.P. Addition
  3815.  
  3816. CPU: AMD-3D
  3817. Type of Instruction: User
  3818.  
  3819. Instruction:    PFADD dest,src
  3820.  
  3821. Description:
  3822.  
  3823.     dest[31..0]  <- dest[31..0]  + src[31..0];
  3824.     dest[63..32] <- dest[63..32] + src[63..32];
  3825.  
  3826. Flags Affected:    None
  3827.  
  3828. ++++++++++++++++++++++++++++++++++
  3829. COP & Times:
  3830.  
  3831. PFADD    mm,mm/m64    0FH 0FH 9EH Postbyte
  3832.  
  3833. ----------O-PFCMPEQ----------------------------
  3834. OPCODE PFCMPEQ    - Packed F.P. comparson, equal to
  3835.  
  3836. CPU: AMD-3D
  3837. Type of Instruction: User
  3838.  
  3839. Instruction:    PFCMPEQ dest,src
  3840.  
  3841. Description:
  3842.  
  3843.     if dest[31..0] == src[31..0]
  3844.     then    dest[31..0] <- FFFFFFFFh
  3845.     else    dest[31..0] <- 00000000h
  3846.  
  3847.     if dest[63..32] == src[63..32]
  3848.     then    dest[63..32] <- FFFFFFFFh
  3849.     else    dest[63..32] <- 00000000h
  3850.  
  3851. Flags Affected:    None
  3852.  
  3853. ++++++++++++++++++++++++++++++++++
  3854. COP & Times:
  3855.  
  3856. PFCMPEQ    mm,mm/m64    0FH 0FH B0H Postbyte
  3857.  
  3858. ----------O-PFCMPGE----------------------------
  3859. OPCODE PFCMPGE    - Packed F.P. comparison, greater or equal to
  3860.  
  3861. CPU: AMD-3D
  3862. Type of Instruction: User
  3863.  
  3864. Instruction:    PFCMPGE dest,src
  3865.  
  3866. Description:
  3867.  
  3868.     if dest[31..0] >= src[31..0]
  3869.     then    dest[31..0] <- FFFFFFFFh
  3870.     else    dest[31..0] <- 00000000h
  3871.  
  3872.     if dest[63..32] >= src[63..32]
  3873.     then    dest[63..32] <- FFFFFFFFh
  3874.     else    dest[63..32] <- 00000000h
  3875.  
  3876. Flags Affected:    None
  3877.  
  3878. ++++++++++++++++++++++++++++++++++
  3879. COP & Times:
  3880.  
  3881. PFCMPGE    mm,mm/m64    0FH 0FH 90H Postbyte
  3882.  
  3883. ----------O-PFCMPGT----------------------------
  3884. OPCODE PFCMPGT    - Packed F.P. compariason, greater  to
  3885.  
  3886. CPU: AMD-3D
  3887. Type of Instruction: User
  3888.  
  3889. Instruction:    PFCMPGT dest,src
  3890.  
  3891. Description:
  3892.  
  3893.     if dest[31..0] > src[31..0]
  3894.     then    dest[31..0] <- FFFFFFFFh
  3895.     else    dest[31..0] <- 00000000h
  3896.  
  3897.     if dest[63..32] > src[63..32]
  3898.     then    dest[63..32] <- FFFFFFFFh
  3899.     else    dest[63..32] <- 00000000h
  3900.  
  3901. Flags Affected:    None
  3902.  
  3903. ++++++++++++++++++++++++++++++++++
  3904. COP & Times:
  3905.  
  3906. PFCMPGT    mm,mm/m64    0FH 0FH A0H Postbyte
  3907.  
  3908. ----------O-PFMAX------------------------------
  3909. OPCODE PFMAX - Packed F.P. Maximum
  3910.  
  3911. CPU: AMD-3D
  3912. Type of Instruction: User
  3913.  
  3914. Instruction:    PFMAX    dest,src
  3915.  
  3916. Description:
  3917.  
  3918.     if src[31..0]  > dest[31..0]  then dest[31..0]    <- src[31..0];
  3919.     if src[63..32] > dest[63..32] then dest[63..32] <- src[63..32];
  3920.  
  3921. Note:
  3922.  
  3923. Flags Affected:    None
  3924.  
  3925. ++++++++++++++++++++++++++++++++++
  3926. COP & Times:
  3927.  
  3928. PFMAX    mm,mm/m64    0FH 0FH A4H
  3929.  
  3930. ----------O-PFMIN------------------------------
  3931. OPCODE PFMIN - Packed F.P. Minimum
  3932.  
  3933. CPU: AMD-3D
  3934. Type of Instruction: User
  3935.  
  3936. Instruction:    PFMIN    dest,src
  3937.  
  3938. Description:
  3939.  
  3940.     if src[31..0]  < dest[31..0]  then dest[31..0]    <- src[31..0];
  3941.     if src[63..32] < dest[63..32] then dest[63..32] <- src[63..32];
  3942.  
  3943. Note:
  3944.  
  3945. Flags Affected:    None
  3946.  
  3947. ++++++++++++++++++++++++++++++++++
  3948. COP & Times:
  3949.  
  3950. PFMIN    mm,mm/m64    0FH 0FH 94H
  3951.  
  3952. ----------O-PFMUL------------------------------
  3953. OPCODE PFMUL    -    Packed F.P. Multiplication
  3954.  
  3955. CPU: AMD-3D
  3956. Type of Instruction: User
  3957.  
  3958. Instruction:    PFMUL    dest,src
  3959.  
  3960. Description:
  3961.  
  3962.     dest[31..0]  <- dest[31..0]  * src[31..0];
  3963.     dest[63..32] <- dest[63..32] * src[63..32];
  3964.  
  3965. Flags Affected:    None
  3966.  
  3967. ++++++++++++++++++++++++++++++++++
  3968. COP & Times:
  3969.  
  3970. PFMUL    mm,mm/m64    0FH 0FH B4H Postbyte
  3971.  
  3972. ----------O-PFRCP------------------------------
  3973. OPCODE PFRCP    - F.P. Reciprocal Approximation
  3974.  
  3975. CPU: AMD-3D
  3976. Type of Instruction: User
  3977.  
  3978. Instruction:    PFRCP dest,src
  3979.  
  3980. Description:
  3981.  
  3982.     dest[31..0]  <- Reciprocal(src[31..0]);
  3983.     dest[63..32] <- Reciprocal(src[63..32]);
  3984.  
  3985. Note:
  3986.     Newton-Raphson algorithm:
  3987.  
  3988.     Division
  3989.     ----------
  3990.  
  3991.     q = a/b;
  3992.  
  3993.     X(i+1) = X(i) * (2 - b * X(i));
  3994.  
  3995.     X0  = RFRCP(b);
  3996.     X1  = RFRCPIT1(b,X0);
  3997.     X2  = RFRCPIT2(X1,X0);
  3998.     q   = PFMUL(a,X2);
  3999.  
  4000.     Square Root
  4001.     --------------
  4002.  
  4003.     X(i+1) = 1/2 * X(i) * (3 - b * X(i)^2);
  4004.  
  4005.     X0 = PFRSQRT(b);
  4006.     X1 = PFMUL(X0,X0);
  4007.     X2 = PFRSQIT(b,X1);
  4008.     X3 = PFRCPIT2(X2,X0);
  4009.     X4 = PFMUL(b,X3);
  4010.  
  4011. Flags Affected:    None
  4012.  
  4013. ++++++++++++++++++++++++++++++++++
  4014. COP & Times:
  4015.  
  4016. PFRCP    mm,mm/m64    0FH 0FH 96H Postbyte
  4017.  
  4018. ----------O-PFRCPIT1---------------------------
  4019. OPCODE PFRCPIT1    - Packed F.P. Reciprocal, first iteration Step
  4020.  
  4021. CPU: AMD-3D
  4022. Type of Instruction: User
  4023.  
  4024. Instruction:    PFRCIT1    dest,src
  4025.  
  4026. Description:
  4027.  
  4028.     dest[31..0]  <- First_Step_Reciprocal(src[31..0]);
  4029.     dest[63..32] <- First_Step_Reciprocal(src[63..32]);
  4030.  
  4031. Note:    see PFRCP for more info.
  4032.  
  4033. Flags Affected:    None
  4034.  
  4035. ++++++++++++++++++++++++++++++++++
  4036. COP & Times:
  4037.  
  4038. PFRCIT1    mm,mm/m64    0FH 0FH A6H Postbyte
  4039.  
  4040. ----------O-PFRCPIT2---------------------------
  4041. OPCODE PFRCPIT2    - Packed F.P. Reciprocal, second iteration Step
  4042.  
  4043. CPU: AMD-3D
  4044. Type of Instruction: User
  4045.  
  4046. Instruction:    PFRCIT2    dest,src
  4047.  
  4048. Description:
  4049.  
  4050.     dest[31..0]  <- Second_Step_Reciprocal(src[31..0]);
  4051.     dest[63..32] <- Second_Step_Reciprocal(src[63..32]);
  4052.  
  4053. Note:    see PFRCP for more info.
  4054.  
  4055. Flags Affected:    None
  4056.  
  4057. ++++++++++++++++++++++++++++++++++
  4058. COP & Times:
  4059.  
  4060. PFRCIT2    mm,mm/m64    0FH 0FH B6H Postbyte
  4061.  
  4062. ----------O-PFRSQIT1---------------------------
  4063. OPCODE PFRSQIT1    - Packed F.P. Reciprocal Square Root, 1st iteration step
  4064.  
  4065. CPU: AMD-3D
  4066. Type of Instruction: User
  4067.  
  4068. Instruction:    PFRSQIT1    dest,src
  4069.  
  4070. Description:
  4071.  
  4072.     dest[31..0]   <- First_Step_Reciprocal_Square_Root(src[31..0]);
  4073.     dest[63..32]  <- First_Step_Reciprocal_Square_Root(src[63..32]);
  4074.  
  4075. Note:    see RFRCP for more info
  4076.  
  4077. Flags Affected:    None
  4078.  
  4079. ++++++++++++++++++++++++++++++++++
  4080. COP & Times:
  4081.  
  4082. PFRSQIT1 mm,mm/m64    0FH 0FH A7H Postbyte
  4083.  
  4084. ----------O-PFRSQRT----------------------------
  4085. OPCODE PFRSQRT    - F.P. Reciprocal Square Root Approximation
  4086.  
  4087. CPU: AMD-3D
  4088. Type of Instruction: User
  4089.  
  4090. Instruction:    PFRSQRT    dest,src
  4091.  
  4092. Description:
  4093.  
  4094.     dest[31..0]  <- Reciprocal_Square_Root(src[31..0]);
  4095.     dest[63..32] <- Reciprocal_Square_Root(src[63..32]);
  4096.  
  4097. Note:    see RFRCP for more info
  4098.  
  4099. Flags Affected:    None
  4100.  
  4101. ++++++++++++++++++++++++++++++++++
  4102. COP & Times:
  4103.  
  4104. PFRSQRT mm,mm/m64    0FH 0FH 97H Postbyte
  4105.  
  4106. ----------O-PFSUB------------------------------
  4107. OPCODE PFSUB    - Packed F.P. Subtraction
  4108.  
  4109. CPU: AMD-3D
  4110. Type of Instruction: User
  4111.  
  4112. Instruction:    PFSUB dest,src
  4113.  
  4114. Description:
  4115.  
  4116.     dest[31..0]  <- dest[31..0]  - src[31..0];
  4117.     dest[63..32] <- dest[63..32] - src[63..32];
  4118.  
  4119. Flags Affected:    None
  4120.  
  4121. ++++++++++++++++++++++++++++++++++
  4122. COP & Times:
  4123.  
  4124. PFSUB    mm,mm/m64    0FH 0FH 9AH Postbyte
  4125.  
  4126. ----------O-PFSUBR-----------------------------
  4127. OPCODE PFSUBR    - Packed F.P. Reverse Subtraction
  4128.  
  4129. CPU: AMD-3D
  4130. Type of Instruction: User
  4131.  
  4132. Instruction:    PFSUBR dest,src
  4133.  
  4134. Description:
  4135.  
  4136.     dest[31..0]  <- src[31..0]  - dest[31..0];
  4137.     dest[63..32] <- src[63..32] - dest[63..32];
  4138.  
  4139. Flags Affected:    None
  4140.  
  4141. ++++++++++++++++++++++++++++++++++
  4142. COP & Times:
  4143.  
  4144. PFSUBR    mm,mm/m64    0FH 0FH AAH Postbyte
  4145.  
  4146. ----------O-PI2FD------------------------------
  4147. OPCODE PI2FD    -  Packed 32-bit Integer to F.P. conversion
  4148.  
  4149. CPU: AMD-3D
  4150. Type of Instruction: User
  4151.  
  4152. Instruction:    PI2FD dest,src
  4153.  
  4154. Description:
  4155.  
  4156.     dest[31..0]  <- float(src[31..0]);
  4157.     dest[63..32] <- float(src[63..32]);
  4158.  
  4159. Flags Affected:    None
  4160.  
  4161. ++++++++++++++++++++++++++++++++++
  4162. COP & Times:
  4163.  
  4164. PI2FD mm,mm/m64        0FH 0FH 0DH Postbyte
  4165.  
  4166. ----------O-PMACHRIW---------------------------
  4167. OPCODE PMACHRIW    - Packed Multiply and Accumulate with Rounding
  4168.  
  4169. CPU: Cyrix with Extended MMX Instruction Set
  4170. Type of Instruction: User
  4171.  
  4172. Instruction:    PMACHRIW    dest, src
  4173.  
  4174. Description:
  4175.     dest[15..0]    <-
  4176. dest[15..0] + (dest[15..0]*src[15..0] + 00004000H)[30..15]
  4177.     dest[31..16]    <-
  4178. dest[31..16] + (dest[31..16]*src[31..16] + 00004000H)[30..15]
  4179.     dest[47..32]    <-
  4180. dest[47..32] + (dest[47..32]*src[47..32] + 00004000H)[30..15]
  4181.     dest[63..48]    <-
  4182. dest[63..48] + (dest[63..48]*src[63..48] + 00004000H)[30..15]
  4183.  
  4184. Notes:        The PMACHRIW multiplies the two source operands using the
  4185.     method described for PMULHRW, and then accumulates the result with
  4186.     the value in the implied destination register using wrap-around
  4187.     arithmetic. The final result is placed in the implied DEST register.
  4188.         The DEST must be an MMX register. The SRC must be a 64-bit
  4189.     memory operand. The destination operand is an implied MMX register
  4190.     that depends on the DEST.
  4191.  
  4192. Flags Affected:    None
  4193.  
  4194. Exceptions:
  4195.  
  4196. RM    PM    VM    SMM    Description
  4197.     #GP(0)            If Illegal memory operands EA in CS,DS,ES,FS,GS
  4198.     #SS(0)            If Illegal memory operands EA in SS
  4199.       #PF(fcode)        If page fault
  4200.     #AC    #AC        If unaligned memory reference then alignment
  4201.                 check enabled and in ring 3.
  4202. #UD    #UD    #UD    #UD    If CR0.EM = 1
  4203. #NM    #NM    #NM    #NM    If CR0.TS = 1
  4204. #MF    #MF    #MF    #MF    If pending FPU Exception
  4205. #13        #13        If any part of the operand lies outside of the
  4206.                 EA space from 0 to FFFFH
  4207. ++++++++++++++++++++++++++++++++++
  4208. COP & Times:
  4209.  
  4210. PMACHRIW    mm,m64    0FH 5EH PostByte
  4211.  
  4212. ----------O-PMADDWD--------------------------------
  4213. OPCODE PMADDWD    -  Packed Multiply and Add Dwords
  4214.  
  4215. CPU:  all which supported IA MMX:
  4216.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  4217. Type of Instruction: User
  4218.  
  4219. Instruction: PMADDWD  dest,src
  4220.  
  4221. Description:
  4222.  
  4223.     dest[31..0]  <- dest[15..0] * src[15..0] + dest[31..16] * src[31..16]
  4224.     dest[63..32] <- dest[47..32] * src[47..32] + dest[63..48] * src[63..48]
  4225.  
  4226. Note:      Multiply the packed word in MMX register by the packed word in
  4227.     MMXregister/memory. Add the 32-bit results pairwise and store in MMX
  4228.     register as dword.
  4229.       This instruction wraps around to 80000000H only when all four words
  4230.     of both the source and destination operands are 8000H.
  4231.  
  4232. Flags affected:     None
  4233.  
  4234. Exceptions:
  4235.  
  4236. RM    PM    VM    SMM    Description
  4237.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  4238.     #SS(0)            If illegal memory operand's EA in SS
  4239.       #PF(fcode)        If page fault
  4240.     #AC    #AC        If unaligned memory reference then alignment
  4241.                 check enabled and in ring 3.
  4242. #UD    #UD    #UD    #UD    If CR0.EM = 1
  4243. #NM    #NM    #NM    #NM    If CR0.TS = 1
  4244. #MF    #MF    #MF    #MF    If pending FPU Exception
  4245. #13        #13        If any part of the the operand lies outside of
  4246.                 the EA space from 0 to FFFFH
  4247. ++++++++++++++++++++++++++++++++++++++
  4248. COP & Times:
  4249.  
  4250. PMADDWD    mm,mm/m64    0FH F5H    PostByte
  4251.  
  4252.      P55C:    n/a
  4253. future P6:    n/a
  4254.  
  4255. ----------O-PMAGW------------------------------
  4256. OPCODE PMAGW    - Packed Magnitude
  4257.  
  4258. CPU: Cyrix with Extended MMX Instruction Set
  4259. Type of Instruction: User
  4260.  
  4261. Instruction:    PMAGW    dest, src
  4262.  
  4263. Description:
  4264.     IF abs(src[15..0])  > abs(dest[15..0])    THEN dest[15..]     <-src[15..0]
  4265.     IF abs(src[31..16]) > abs(dest[31..16]) THEN dest[31..16]<-src[31..16]
  4266.     IF abs(src[47..32]) > abs(dest[47..32]) THEN dest[47..32]<-src[47..32]
  4267.     IF abs(src[63..56]) > abs(dest[63..56]) THEN dest[63..56]<-src[63..56]
  4268.  
  4269. Notes:        The PMAGW instruction compares the absolute value of the
  4270.     packed words in the destination operand and sets the destination words
  4271.     to the value that has the larger magnitude. The PMAGW instruction
  4272.     does not change the sign of the value with the larger magnitude and
  4273.     it does not saturate.
  4274.         The DEST must be an MMX register. The SRC can be either an MMX
  4275.     register or a 64-bit memory operand.
  4276.  
  4277. Flags Affected:    None
  4278.  
  4279. Exceptions:
  4280.  
  4281. RM    PM    VM    SMM    Description
  4282.     #GP(0)            If Illegal memory operands EA in CS,DS,ES,FS,GS
  4283.     #SS(0)            If Illegal memory operands EA in SS
  4284.       #PF(fcode)        If page fault
  4285.     #AC    #AC        If unaligned memory reference then alignment
  4286.                 check enabled and in ring 3.
  4287. #UD    #UD    #UD    #UD    If CR0.EM = 1
  4288. #NM    #NM    #NM    #NM    If CR0.TS = 1
  4289. #MF    #MF    #MF    #MF    If pending FPU Exception
  4290. #13        #13        If any part of the operand lies outside of the
  4291.                 EA space from 0 to FFFFH
  4292. ++++++++++++++++++++++++++++++++++
  4293. COP & Times:
  4294.  
  4295. PMAGW    mm,mm/m64    0FH 52H PostByte
  4296.  
  4297. ----------O-PMULHRIW---------------------------
  4298. OPCODE PMULHRIW    - Packed Multiply High with Rounding, result to Implied Register
  4299.  
  4300. CPU: Cyrix with Extended MMX Instruction Set
  4301. Type of Instruction: User
  4302.  
  4303. Instruction:    PMULHRIW    dest, src
  4304.  
  4305. Description:
  4306.     mmi[15..0]    <-    (dest[15..0]*src[15..0]      + 00004000H)[30..15]
  4307.     mmi[31..16]    <-    (dest[31..16]*src[31..16] + 00004000H)[30..15]
  4308.     mmi[47..32]    <-    (dest[47..32]*src[47..32] + 00004000H)[30..15]
  4309.     mmi[63..48]    <-    (dest[63..48]*src[63..48] + 00004000H)[30..15]
  4310.  
  4311. Notes:        The PMULHRIW instruction are intended to give a result of the
  4312.     form a 16x16 bit multiply with the LSB rounded before truncating to 16
  4313.     bits.
  4314.         The SRC can be    either an MMX register or a 64-bit memory
  4315.     operand. The destination is an MMX register, depending on the SRC.
  4316.     The intent of the PMULHRIW instruction is the same as the PMULHRW
  4317.     instrucction except that both sources are preserved
  4318.  
  4319. Flags Affected:    None
  4320.  
  4321. Exceptions:
  4322.  
  4323. RM    PM    VM    SMM    Description
  4324.     #GP(0)            If Illegal memory operands EA in CS,DS,ES,FS,GS
  4325.     #SS(0)            If Illegal memory operands EA in SS
  4326.       #PF(fcode)        If page fault
  4327.     #AC    #AC        If unaligned memory reference then alignment
  4328.                 check enabled and in ring 3.
  4329. #UD    #UD    #UD    #UD    If CR0.EM = 1
  4330. #NM    #NM    #NM    #NM    If CR0.TS = 1
  4331. #MF    #MF    #MF    #MF    If pending FPU Exception
  4332. #13        #13        If any part of the operand lies outside of the
  4333.                 EA space from 0 to FFFFH
  4334. ++++++++++++++++++++++++++++++++++
  4335. COP & Times:
  4336.  
  4337. PMULHRIW    mm,mm/m64    0FH 5DH PostByte
  4338.  
  4339. ----------O-PMULHRW----------------------------
  4340. OPCODE PMULHRW    - Packed Multiply High with Rounding
  4341.  
  4342. CPU: Cyrix with Extended MMX Instruction Set
  4343. Type of Instruction: User
  4344.  
  4345. Instruction:    PMULHRW    dest, src
  4346.  
  4347. Description:
  4348.     dest[15..0]    <-    (dest[15..0]*src[15..0]      + 00004000H)[30..15]
  4349.     dest[31..16]    <-    (dest[31..16]*src[31..16] + 00004000H)[30..15]
  4350.     dest[47..32]    <-    (dest[47..32]*src[47..32] + 00004000H)[30..15]
  4351.     dest[63..48]    <-    (dest[63..48]*src[63..48] + 00004000H)[30..15]
  4352.  
  4353. Notes:        The PMULHRW instruction are intended to give a result of the
  4354.     form a 16x16 bit multiply with the LSB rounded before truncating to 16
  4355.     bits. This is in contrast to the PMULHW instruction which gives a
  4356.     resultof the form ss.14 with no rounding.
  4357.     as the PADDSW instruction, except that it preserves both source
  4358.     operands.
  4359.         The SRC can be    either an MMX register or a 64-bit memory
  4360.     operand. The destination is an MMX register.
  4361.  
  4362. Flags Affected:    None
  4363.  
  4364. Exceptions:
  4365.  
  4366. RM    PM    VM    SMM    Description
  4367.     #GP(0)            If Illegal memory operands EA in CS,DS,ES,FS,GS
  4368.     #SS(0)            If Illegal memory operands EA in SS
  4369.       #PF(fcode)        If page fault
  4370.     #AC    #AC        If unaligned memory reference then alignment
  4371.                 check enabled and in ring 3.
  4372. #UD    #UD    #UD    #UD    If CR0.EM = 1
  4373. #NM    #NM    #NM    #NM    If CR0.TS = 1
  4374. #MF    #MF    #MF    #MF    If pending FPU Exception
  4375. #13        #13        If any part of the operand lies outside of the
  4376.                 EA space from 0 to FFFFH
  4377. ++++++++++++++++++++++++++++++++++
  4378. COP & Times:
  4379.  
  4380. PMULHRW    mm,mm/m64    0FH 59H PostByte
  4381.  
  4382. ----------O-PMULHRW----------------------------
  4383. OPCODE PMULHRW    - Multiply Signed Packed 16-bits with rounding and store to 16bit
  4384.  
  4385. CPU: AMD-3D
  4386. Type of Instruction: User
  4387.  
  4388. Instruction:    PMULHRW    dest,src
  4389.  
  4390. Description:
  4391.  
  4392.     dest[15..0]    <-  dest[15..0]    * src[15..0];
  4393.     dest[31..16]   <-  dest[31..16] * src[31..16];
  4394.     dest[47..32]   <-  dest[47..32] * src[47..32];
  4395.     dest[63..48]   <-  dest[63..48] * src[63..48];
  4396.  
  4397. Note:    Saturation arithmetic.
  4398.     This is not F.P. instruction
  4399.  
  4400. Flags Affected:    None
  4401.  
  4402. ++++++++++++++++++++++++++++++++++
  4403. COP & Times:
  4404.  
  4405. PMULHRW mm,mm/m64    0FH 0FH B7H Postvyte
  4406.  
  4407. ----------O-PMULHW---------------------------------
  4408. OPCODE PMULHW    -  Packed Multiply High by Words
  4409.  
  4410. CPU:  all which supported IA MMX:
  4411.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  4412. Type of Instruction: User
  4413.  
  4414. Instruction: PMULHW  dest,src
  4415.  
  4416. Description:
  4417.  
  4418.     dest[15..0]  <- (dest[15..0] * src[15..0]) (31..16)
  4419.     dest[31..16] <- (dest[31..16] * src[31..16]) (31..16)
  4420.     dest[47..32]  <- (dest[47..32] * src[47..32]) (31..16)
  4421.     dest[63..48]  <- (dest[63..48] * src[63..48]) (31..16)
  4422.  
  4423. Note:      Multiply the signed packed word in MMX register with the signed
  4424.     packed word in MMXregister/memory, then store the high-order 16 bits of
  4425.     the results in MMX register.
  4426.  
  4427. Flags affected:     None
  4428.  
  4429. Exceptions:
  4430.  
  4431. RM    PM    VM    SMM    Description
  4432.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  4433.     #SS(0)            If illegal memory operand's EA in SS
  4434.       #PF(fcode)        If page fault
  4435.     #AC    #AC        If unaligned memory reference then alignment
  4436.                 check enabled and in ring 3.
  4437. #UD    #UD    #UD    #UD    If CR0.EM = 1
  4438. #NM    #NM    #NM    #NM    If CR0.TS = 1
  4439. #MF    #MF    #MF    #MF    If pending FPU Exception
  4440. #13        #13        If any part of the the operand lies outside of
  4441.                 the EA space from 0 to FFFFH
  4442. ++++++++++++++++++++++++++++++++++++++
  4443. COP & Times:
  4444.  
  4445. PMULHW    mm,mm/m64    0FH E5H    PostByte
  4446.  
  4447.      P55C:    n/a
  4448. future P6:    n/a
  4449.  
  4450. ----------O-PMULLW---------------------------------
  4451. OPCODE PMULLW    -  Packed Multiply Low by Words
  4452.  
  4453. CPU:  all which supported IA MMX:
  4454.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  4455. Type of Instruction: User
  4456.  
  4457. Instruction: PMULLW  dest,src
  4458.  
  4459. Description:
  4460.  
  4461.     dest[15..0]  <- (dest[15..0] * src[15..0]) (15..0)
  4462.     dest[31..16] <- (dest[31..16] * src[31..16]) (15..0)
  4463.     dest[47..32]  <- (dest[47..32] * src[47..32]) (15..0)
  4464.     dest[63..48]  <- (dest[63..48] * src[63..48]) (15..0)
  4465.  
  4466. Note:      Multiply the packed word in MMX register with the packed word in
  4467.     MMXregister/memory, then store the low-order 16 bits of    the results in
  4468.     MMX register.
  4469.  
  4470. Flags affected:     None
  4471.  
  4472. Exceptions:
  4473.  
  4474. RM    PM    VM    SMM    Description
  4475.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  4476.     #SS(0)            If illegal memory operand's EA in SS
  4477.       #PF(fcode)        If page fault
  4478.     #AC    #AC        If unaligned memory reference then alignment
  4479.                 check enabled and in ring 3.
  4480. #UD    #UD    #UD    #UD    If CR0.EM = 1
  4481. #NM    #NM    #NM    #NM    If CR0.TS = 1
  4482. #MF    #MF    #MF    #MF    If pending FPU Exception
  4483. #13        #13        If any part of the the operand lies outside of
  4484.                 the EA space from 0 to FFFFH
  4485. ++++++++++++++++++++++++++++++++++++++
  4486. COP & Times:
  4487.  
  4488. PMULLW    mm,mm/m64    0FH D5H    PostByte
  4489.  
  4490.      P55C:    n/a
  4491. future P6:    n/a
  4492.  
  4493. ----------O-PMVGEZB----------------------------
  4494. OPCODE PMVGEZB    - Packed Conditional Move
  4495.  
  4496. CPU: Cyrix with Extended MMX Instruction Set
  4497. Type of Instruction: User
  4498.  
  4499. Instruction:    PMVGEZB    dest, src
  4500.  
  4501. Description:
  4502.  
  4503.     if mmi[7..0] >= 0 then dest[7..0] <- src[7..0];
  4504.     if mmi[15..8] >= 0 then dest[15..8] <- src[15..8];
  4505.     if mmi[23..16] >= 0 then dest[23..16] <- src[23..16];
  4506.     if mmi[31..24] >= 0 then dest[31..24] <- src[31..24];
  4507.     if mmi[39..32] >= 0 then dest[39..32] <- src[39..32];
  4508.     if mmi[47..40] >= 0 then dest[47..40] <- src[47..40];
  4509.     if mmi[55..48] >= 0 then dest[55..48] <- src[55..48];
  4510.     if mmi[63..56] >= 0 then dest[63..56] <- src[63..56];
  4511.  
  4512. Note:    mmi is implied MMX register.
  4513.  
  4514. Flags Affected:    None
  4515.  
  4516. ++++++++++++++++++++++++++++++++++
  4517. COP & Times:
  4518.  
  4519. PMVGEZB    mm,mm/m64    0FH 5CH PostByte
  4520.  
  4521. ----------O-PMVLZB-----------------------------
  4522. OPCODE PMVLZB    - Packed Conditional Move
  4523.  
  4524. CPU: Cyrix with Extended MMX Instruction Set
  4525. Type of Instruction: User
  4526.  
  4527. Instruction:    PMVLZB    dest, src
  4528.  
  4529. Description:
  4530.  
  4531.     if mmi[7..0] < 0 then dest[7..0] <- src[7..0];
  4532.     if mmi[15..8] < 0 then dest[15..8] <- src[15..8];
  4533.     if mmi[23..16] < 0 then dest[23..16] <- src[23..16];
  4534.     if mmi[31..24] < 0 then dest[31..24] <- src[31..24];
  4535.     if mmi[39..32] < 0 then dest[39..32] <- src[39..32];
  4536.     if mmi[47..40] < 0 then dest[47..40] <- src[47..40];
  4537.     if mmi[55..48] < 0 then dest[55..48] <- src[55..48];
  4538.     if mmi[63..56] < 0 then dest[63..56] <- src[63..56];
  4539.  
  4540. Note:    mmi is implied MMX register.
  4541.  
  4542. Flags Affected:    None
  4543.  
  4544. ++++++++++++++++++++++++++++++++++
  4545. COP & Times:
  4546.  
  4547. PMVLZB    mm,mm/m64    0FH 5BH PostByte
  4548.  
  4549. ----------O-PMVNZB-----------------------------
  4550. OPCODE PMVNZB    - Packed Conditional Move
  4551.  
  4552. CPU: Cyrix with Extended MMX Instruction Set
  4553. Type of Instruction: User
  4554.  
  4555. Instruction:    PMVNZB    dest, src
  4556.  
  4557. Description:
  4558.  
  4559.     if mmi[7..0] <> 0 then dest[7..0] <- src[7..0];
  4560.     if mmi[15..8] <> 0 then dest[15..8] <- src[15..8];
  4561.     if mmi[23..16] <> 0 then dest[23..16] <- src[23..16];
  4562.     if mmi[31..24] <> 0 then dest[31..24] <- src[31..24];
  4563.     if mmi[39..32] <> 0 then dest[39..32] <- src[39..32];
  4564.     if mmi[47..40] <> 0 then dest[47..40] <- src[47..40];
  4565.     if mmi[55..48] <> 0 then dest[55..48] <- src[55..48];
  4566.     if mmi[63..56] <> 0 then dest[63..56] <- src[63..56];
  4567.  
  4568. Note:    mmi is implied MMX register.
  4569.  
  4570. Flags Affected:    None
  4571.  
  4572. ++++++++++++++++++++++++++++++++++
  4573. COP & Times:
  4574.  
  4575. PMVNZB    mm,mm/m64    0FH 5AH PostByte
  4576.  
  4577. ----------O-PMVZB------------------------------
  4578. OPCODE PMVZB    - Packed Conditional Move
  4579.  
  4580. CPU: Cyrix with Extended MMX Instruction Set
  4581. Type of Instruction: User
  4582.  
  4583. Instruction:    PMVZB    dest, src
  4584.  
  4585. Description:
  4586.  
  4587.     if mmi[7..0] == 0 then dest[7..0] <- src[7..0];
  4588.     if mmi[15..8] == 0 then dest[15..8] <- src[15..8];
  4589.     if mmi[23..16] == 0 then dest[23..16] <- src[23..16];
  4590.     if mmi[31..24] == 0 then dest[31..24] <- src[31..24];
  4591.     if mmi[39..32] == 0 then dest[39..32] <- src[39..32];
  4592.     if mmi[47..40] == 0 then dest[47..40] <- src[47..40];
  4593.     if mmi[55..48] == 0 then dest[55..48] <- src[55..48];
  4594.     if mmi[63..56] == 0 then dest[63..56] <- src[63..56];
  4595.  
  4596. Note:    mmi is implied MMX register.
  4597.  
  4598. Flags Affected:    None
  4599.  
  4600. ++++++++++++++++++++++++++++++++++
  4601. COP & Times:
  4602.  
  4603. PMVZB    mm,mm/m64    0FH 58H PostByte
  4604.  
  4605. ----------O-POR------------------------------------
  4606. OPCODE POR    -  Bitwise Logical Or
  4607.  
  4608. CPU:  all which supported IA MMX:
  4609.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  4610. Type of Instruction: User
  4611.  
  4612. Instruction: POR  dest,src
  4613.  
  4614. Description:
  4615.  
  4616.     dest    <-   dest OR src
  4617.  
  4618. Note:      OR 64 bits from MMXregister/memory with MMX register.
  4619.  
  4620. Flags affected:     None
  4621.  
  4622. Exceptions:
  4623.  
  4624. RM    PM    VM    SMM    Description
  4625.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  4626.     #SS(0)            If illegal memory operand's EA in SS
  4627.       #PF(fcode)        If page fault
  4628.     #AC    #AC        If unaligned memory reference then alignment
  4629.                 check enabled and in ring 3.
  4630. #UD    #UD    #UD    #UD    If CR0.EM = 1
  4631. #NM    #NM    #NM    #NM    If CR0.TS = 1
  4632. #MF    #MF    #MF    #MF    If pending FPU Exception
  4633. #13        #13        If any part of the the operand lies outside of
  4634.                 the EA space from 0 to FFFFH
  4635. ++++++++++++++++++++++++++++++++++++++
  4636. COP & Times:
  4637.  
  4638. POR    mm,mm/m64    0FH EBH    PostByte
  4639.  
  4640.      P55C:    n/a
  4641. future P6:    n/a
  4642.  
  4643. ----------O-PREFETCH---------------------------
  4644. OPCODE PREFETCH - Prefetch CPU cache line into L1 data cache
  4645.  
  4646. CPU: AMD-3D
  4647. Type of Instruction: User
  4648.  
  4649. Instruction:    PREFETCH mem
  4650.  
  4651. Description:
  4652.  
  4653.     PRELOAD_L1_DATA_CACHE_LINE(mem);
  4654.     SET_LINE_STATE_TO_EXCLUSIVE;        (MESI)
  4655.  
  4656. Note:    If cache hit, then do nothing.
  4657.     mem - is address of any cache-line byte.
  4658.  
  4659. Flags Affected:    None
  4660.  
  4661. ++++++++++++++++++++++++++++++++++
  4662. COP & Times:
  4663.  
  4664. PREFETCH mem8    0FH 0DH     mm000xxx
  4665.  
  4666. ----------O-PREFETCHW--------------------------
  4667. OPCODE PREFETCHW - Prefetch CPU cache line into L1 data cache
  4668.  
  4669. CPU: AMD-3D
  4670. Type of Instruction: User
  4671.  
  4672. Instruction:    PREFETCHW mem
  4673.  
  4674. Description:
  4675.  
  4676.     PRELOAD_L1_DATA_CACHE_LINE(mem);
  4677.     SET_LINE_STATE_TO_MODIFIED;        (MESI)
  4678.  
  4679. Note:    If cache hit, then do nothing.
  4680.     mem - is address of any cache-line byte.
  4681.  
  4682. Flags Affected:    None
  4683.  
  4684. ++++++++++++++++++++++++++++++++++
  4685. COP & Times:
  4686.  
  4687. PREFETCHW mem8    0FH 0DH     mm001xxx
  4688.  
  4689. ----------O-PSLLD----------------------------------
  4690. OPCODE PSLLD    -  Packed Shift Left Logical Dwords
  4691.  
  4692. CPU:  all which supported IA MMX:
  4693.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  4694. Type of Instruction: User
  4695.  
  4696. Instruction: PSLLD  dest,src
  4697.  
  4698. Description:
  4699.  
  4700.     temp  <-  src
  4701.     dest[31..0]   <-  dest[31..0] << temp
  4702.     dest[63..32]  <-  dest[63..32] << temp
  4703.  
  4704. Note:      Shift dwords in MMX register left by Imm8 or amount specified in MMX
  4705.     register/memory, while shifting in zeros.
  4706.  
  4707. Flags affected:     None
  4708.  
  4709. Exceptions:
  4710.  
  4711. RM    PM    VM    SMM    Description
  4712.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  4713.     #SS(0)            If illegal memory operand's EA in SS
  4714.       #PF(fcode)        If page fault
  4715.     #AC    #AC        If unaligned memory reference then alignment
  4716.                 check enabled and in ring 3.
  4717. #UD    #UD    #UD    #UD    If CR0.EM = 1
  4718. #NM    #NM    #NM    #NM    If CR0.TS = 1
  4719. #MF    #MF    #MF    #MF    If pending FPU Exception
  4720. #13        #13        If any part of the the operand lies outside of
  4721.                 the EA space from 0 to FFFFH
  4722. ++++++++++++++++++++++++++++++++++++++
  4723. COP & Times:
  4724.  
  4725. PSLLD    mm,mm/m64    0FH F2H    PostByte
  4726. PSLLD    mm,Imm8        0FH 72H/6 PostByte ImmData
  4727.  
  4728.      P55C:    n/a
  4729. future P6:    n/a
  4730.  
  4731. ----------O-PSLLQ----------------------------------
  4732. OPCODE PSLLQ    -  Packed Shift Left Logical Qwords
  4733.  
  4734. CPU:  all which supported IA MMX:
  4735.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  4736. Type of Instruction: User
  4737.  
  4738. Instruction: PSLLQ  dest,src
  4739.  
  4740. Description:
  4741.  
  4742.     temp  <-  src
  4743.     dest  <-  dest << temp
  4744.  
  4745. Note:      Shift MMX register left by Imm8 or amount specified in MMXregister/
  4746.     /memory, while shifting in zeros.
  4747.  
  4748. Flags affected:     None
  4749.  
  4750. Exceptions:
  4751.  
  4752. RM    PM    VM    SMM    Description
  4753.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  4754.     #SS(0)            If illegal memory operand's EA in SS
  4755.       #PF(fcode)        If page fault
  4756.     #AC    #AC        If unaligned memory reference then alignment
  4757.                 check enabled and in ring 3.
  4758. #UD    #UD    #UD    #UD    If CR0.EM = 1
  4759. #NM    #NM    #NM    #NM    If CR0.TS = 1
  4760. #MF    #MF    #MF    #MF    If pending FPU Exception
  4761. #13        #13        If any part of the the operand lies outside of
  4762.                 the EA space from 0 to FFFFH
  4763. ++++++++++++++++++++++++++++++++++++++
  4764. COP & Times:
  4765.  
  4766. PSLLQ    mm,mm/m64    0FH F3H    PostByte
  4767. PSLLQ    mm,Imm8        0FH 73H/6 PostByte ImmData
  4768.  
  4769.      P55C:    n/a
  4770. future P6:    n/a
  4771.  
  4772. ----------O-PSLLW----------------------------------
  4773. OPCODE PSLLW    -  Packed Shift Left Logical Words
  4774.  
  4775. CPU:  all which supported IA MMX:
  4776.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  4777. Type of Instruction: User
  4778.  
  4779. Instruction: PSLLW  dest,src
  4780.  
  4781. Description:
  4782.  
  4783.     temp  <-  src
  4784.     dest[15..0]   <-  dest[15..0] << temp
  4785.     dest[31..16]  <-  dest[31..16] << temp
  4786.     dest[47..32]  <-  dest[47..32] << temp
  4787.     dest[63..48]  <-  dest[63..48] << temp
  4788.  
  4789. Note:      Shift words in MMX register left by Imm8 or amount specified in MMX
  4790.     register/memory, while shifting in zeros.
  4791.  
  4792. Flags affected:     None
  4793.  
  4794. Exceptions:
  4795.  
  4796. RM    PM    VM    SMM    Description
  4797.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  4798.     #SS(0)            If illegal memory operand's EA in SS
  4799.       #PF(fcode)        If page fault
  4800.     #AC    #AC        If unaligned memory reference then alignment
  4801.                 check enabled and in ring 3.
  4802. #UD    #UD    #UD    #UD    If CR0.EM = 1
  4803. #NM    #NM    #NM    #NM    If CR0.TS = 1
  4804. #MF    #MF    #MF    #MF    If pending FPU Exception
  4805. #13        #13        If any part of the the operand lies outside of
  4806.                 the EA space from 0 to FFFFH
  4807. ++++++++++++++++++++++++++++++++++++++
  4808. COP & Times:
  4809.  
  4810. PSLLW    mm,mm/m64    0FH F1H    PostByte
  4811. PSLLW    mm,Imm8        0FH 71H/6 PostByte ImmData
  4812.  
  4813.      P55C:    n/a
  4814. future P6:    n/a
  4815.  
  4816. ----------O-PSRAD----------------------------------
  4817. OPCODE PSRAD    -  Packed Shift Right Arithmetic Dwords
  4818.  
  4819. CPU:  all which supported IA MMX:
  4820.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  4821. Type of Instruction: User
  4822.  
  4823. Instruction: PSRAD  dest,src
  4824.  
  4825. Description:
  4826.  
  4827.     temp  <-  src
  4828.     dest[31..0]   <-  SignExtend(dest[31..0]) >> temp
  4829.     dest[63..32]  <-  SignExtend(dest[63..32]) >> temp
  4830.  
  4831. Note:      Shift dwords in MMX register right by Imm8 or amount specified in MMX
  4832.     register/memory, while shifting in sign bits.
  4833.  
  4834. Flags affected:     None
  4835.  
  4836. Exceptions:
  4837.  
  4838. RM    PM    VM    SMM    Description
  4839.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  4840.     #SS(0)            If illegal memory operand's EA in SS
  4841.       #PF(fcode)        If page fault
  4842.     #AC    #AC        If unaligned memory reference then alignment
  4843.                 check enabled and in ring 3.
  4844. #UD    #UD    #UD    #UD    If CR0.EM = 1
  4845. #NM    #NM    #NM    #NM    If CR0.TS = 1
  4846. #MF    #MF    #MF    #MF    If pending FPU Exception
  4847. #13        #13        If any part of the the operand lies outside of
  4848.                 the EA space from 0 to FFFFH
  4849. ++++++++++++++++++++++++++++++++++++++
  4850. COP & Times:
  4851.  
  4852. PSRAD    mm,mm/m64    0FH E2H    PostByte
  4853. PSRAD    mm,Imm8        0FH 72H/4 PostByte ImmData
  4854.  
  4855.      P55C:    n/a
  4856. future P6:    n/a
  4857.  
  4858. ----------O-PSRAW----------------------------------
  4859. OPCODE PSRAW    -  Packed Shift Right Arithmetic Words
  4860.  
  4861. CPU:  all which supported IA MMX:
  4862.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  4863. Type of Instruction: User
  4864.  
  4865. Instruction: PSRAW  dest,src
  4866.  
  4867. Description:
  4868.  
  4869.     temp  <-  src
  4870.     dest[15..0]   <-  SignExtend(dest[15..0]) >> temp
  4871.     dest[31..16]  <-  SignExtend(dest[31..16]) >> temp
  4872.     dest[47..32]  <-  SignExtend(dest[47..32]) >> temp
  4873.     dest[63..48]  <-  SignExtend(dest[63..48]) >> temp
  4874.  
  4875. Note:      Shift words in MMX register right by Imm8 or amount specified in MMX
  4876.     register/memory, while shifting in sign bits.
  4877.  
  4878. Flags affected:     None
  4879.  
  4880. Exceptions:
  4881.  
  4882. RM    PM    VM    SMM    Description
  4883.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  4884.     #SS(0)            If illegal memory operand's EA in SS
  4885.       #PF(fcode)        If page fault
  4886.     #AC    #AC        If unaligned memory reference then alignment
  4887.                 check enabled and in ring 3.
  4888. #UD    #UD    #UD    #UD    If CR0.EM = 1
  4889. #NM    #NM    #NM    #NM    If CR0.TS = 1
  4890. #MF    #MF    #MF    #MF    If pending FPU Exception
  4891. #13        #13        If any part of the the operand lies outside of
  4892.                 the EA space from 0 to FFFFH
  4893. ++++++++++++++++++++++++++++++++++++++
  4894. COP & Times:
  4895.  
  4896. PSRAW    mm,mm/m64    0FH E1H    PostByte
  4897. PSRAW    mm,Imm8        0FH 71H/4 PostByte ImmData
  4898.  
  4899.      P55C:    n/a
  4900. future P6:    n/a
  4901.  
  4902. ----------O-PSRLD----------------------------------
  4903. OPCODE PSRLD    -  Packed Shift Right Logical Dwords
  4904.  
  4905. CPU:  all which supported IA MMX:
  4906.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  4907. Type of Instruction: User
  4908.  
  4909. Instruction: PSRLD  dest,src
  4910.  
  4911. Description:
  4912.  
  4913.     temp  <-  src
  4914.     dest[31..0]   <-  dest[31..0] >> temp
  4915.     dest[63..32]  <-  dest[63..32] >> temp
  4916.  
  4917. Note:      Shift dwords in MMX register right by Imm8 or amount specified in MMX
  4918.     register/memory, while shifting in zeros.
  4919.  
  4920. Flags affected:     None
  4921.  
  4922. Exceptions:
  4923.  
  4924. RM    PM    VM    SMM    Description
  4925.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  4926.     #SS(0)            If illegal memory operand's EA in SS
  4927.       #PF(fcode)        If page fault
  4928.     #AC    #AC        If unaligned memory reference then alignment
  4929.                 check enabled and in ring 3.
  4930. #UD    #UD    #UD    #UD    If CR0.EM = 1
  4931. #NM    #NM    #NM    #NM    If CR0.TS = 1
  4932. #MF    #MF    #MF    #MF    If pending FPU Exception
  4933. #13        #13        If any part of the the operand lies outside of
  4934.                 the EA space from 0 to FFFFH
  4935. ++++++++++++++++++++++++++++++++++++++
  4936. COP & Times:
  4937.  
  4938. PSRLD    mm,mm/m64    0FH D2H    PostByte
  4939. PSRLD    mm,Imm8        0FH 72H/2 PostByte ImmData
  4940.  
  4941.      P55C:    n/a
  4942. future P6:    n/a
  4943.  
  4944. ----------O-PSRLQ----------------------------------
  4945. OPCODE PSRLQ    -  Packed Shift Right Logical Qwords
  4946.  
  4947. CPU:  all which supported IA MMX:
  4948.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  4949. Type of Instruction: User
  4950.  
  4951. Instruction: PSRLQ  dest,src
  4952.  
  4953. Description:
  4954.  
  4955.     temp  <-  src
  4956.     dest  <-  dest >> temp
  4957.  
  4958. Note:      Shift MMX register right by Imm8 or amount specified in MMXregister/
  4959.     /memory, while shifting in zeros.
  4960.  
  4961. Flags affected:     None
  4962.  
  4963. Exceptions:
  4964.  
  4965. RM    PM    VM    SMM    Description
  4966.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  4967.     #SS(0)            If illegal memory operand's EA in SS
  4968.       #PF(fcode)        If page fault
  4969.     #AC    #AC        If unaligned memory reference then alignment
  4970.                 check enabled and in ring 3.
  4971. #UD    #UD    #UD    #UD    If CR0.EM = 1
  4972. #NM    #NM    #NM    #NM    If CR0.TS = 1
  4973. #MF    #MF    #MF    #MF    If pending FPU Exception
  4974. #13        #13        If any part of the the operand lies outside of
  4975.                 the EA space from 0 to FFFFH
  4976. ++++++++++++++++++++++++++++++++++++++
  4977. COP & Times:
  4978.  
  4979. PSRLQ    mm,mm/m64    0FH D3H    PostByte
  4980. PSRLQ    mm,Imm8        0FH 73H/2 PostByte ImmData
  4981.  
  4982.      P55C:    n/a
  4983. future P6:    n/a
  4984.  
  4985. ----------O-PSRLW----------------------------------
  4986. OPCODE PSRLW    -  Packed Shift Right Logical Words
  4987.  
  4988. CPU:  all which supported IA MMX:
  4989.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  4990. Type of Instruction: User
  4991.  
  4992. Instruction: PSRLW  dest,src
  4993.  
  4994. Description:
  4995.  
  4996.     temp  <-  src
  4997.     dest[15..0]   <-  dest[15..0] >> temp
  4998.     dest[31..16]  <-  dest[31..16] >> temp
  4999.     dest[47..32]  <-  dest[47..32] >> temp
  5000.     dest[63..48]  <-  dest[63..48] >> temp
  5001.  
  5002. Note:      Shift words in MMX register right by Imm8 or amount specified in MMX
  5003.     register/memory, while shifting in zeros.
  5004.  
  5005. Flags affected:     None
  5006.  
  5007. Exceptions:
  5008.  
  5009. RM    PM    VM    SMM    Description
  5010.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  5011.     #SS(0)            If illegal memory operand's EA in SS
  5012.       #PF(fcode)        If page fault
  5013.     #AC    #AC        If unaligned memory reference then alignment
  5014.                 check enabled and in ring 3.
  5015. #UD    #UD    #UD    #UD    If CR0.EM = 1
  5016. #NM    #NM    #NM    #NM    If CR0.TS = 1
  5017. #MF    #MF    #MF    #MF    If pending FPU Exception
  5018. #13        #13        If any part of the the operand lies outside of
  5019.                 the EA space from 0 to FFFFH
  5020. ++++++++++++++++++++++++++++++++++++++
  5021. COP & Times:
  5022.  
  5023. PSRLW    mm,mm/m64    0FH D1H    PostByte
  5024. PSRLW    mm,Imm8        0FH 71H/2 PostByte ImmData
  5025.  
  5026.      P55C:    n/a
  5027. future P6:    n/a
  5028.  
  5029. ----------O-PSUBB----------------------------------
  5030. OPCODE PSUBB    -  Packed Subtract Bytes
  5031.  
  5032. CPU:  all which supported IA MMX:
  5033.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  5034. Type of Instruction: User
  5035.  
  5036. Instruction: PSUBB  dest,src
  5037.  
  5038. Description:
  5039.  
  5040.     dest[7..0]    <-    dest[7..0]   - src[7..0]
  5041.     dest[15..8]    <-    dest[15..8]  - src[15..8]
  5042.     dest[23..16]    <-    dest[23..16] - src[23..16]
  5043.     dest[31..24]    <-    dest[31..24] - src[31..24]
  5044.     dest[39..32]    <-    dest[39..32] - src[39..32]
  5045.     dest[47..40]    <-    dest[47..40] - src[47..40]
  5046.     dest[55..48]    <-    dest[55..48] - src[55..48]
  5047.     dest[63..56]    <-    dest[63..56] - src[63..56]
  5048.  
  5049. Note:      This instruction subtract packed byte in MMXregister/memory from
  5050.     packed byte in MMX register.
  5051.  
  5052. Flags affected:     None
  5053.  
  5054. Exceptions:
  5055.  
  5056. RM    PM    VM    SMM    Description
  5057.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  5058.     #SS(0)            If illegal memory operand's EA in SS
  5059.       #PF(fcode)        If page fault
  5060.     #AC    #AC        If unaligned memory reference then alignment
  5061.                 check enabled and in ring 3.
  5062. #UD    #UD    #UD    #UD    If CR0.EM = 1
  5063. #NM    #NM    #NM    #NM    If CR0.TS = 1
  5064. #MF    #MF    #MF    #MF    If pending FPU Exception
  5065. #13        #13        If any part of the the operand lies outside of
  5066.                 the EA space from 0 to FFFFH
  5067. ++++++++++++++++++++++++++++++++++++++
  5068. COP & Times:
  5069.  
  5070. PSUBB    mm,mm/m64    0FH F8H    PostByte
  5071.  
  5072.      P55C:    n/a
  5073. future P6:    n/a
  5074.  
  5075. ----------O-PSUBD----------------------------------
  5076. OPCODE PSUBD    -  Packed Subtract Dwords
  5077.  
  5078. CPU:  all which supported IA MMX:
  5079.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  5080. Type of Instruction: User
  5081.  
  5082. Instruction: PSUBD  dest,src
  5083.  
  5084. Description:
  5085.  
  5086.     dest[31..0]    <-    dest[31..0]  - src[31..0]
  5087.     dest[63..32]    <-    dest[63..48] - src[63..32]
  5088.  
  5089. Note:      This instruction subtract packed dword in MMXregister/memory from
  5090.     packed dword in MMX register.
  5091.  
  5092. Flags affected:     None
  5093.  
  5094. Exceptions:
  5095.  
  5096. RM    PM    VM    SMM    Description
  5097.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  5098.     #SS(0)            If illegal memory operand's EA in SS
  5099.       #PF(fcode)        If page fault
  5100.     #AC    #AC        If unaligned memory reference then alignment
  5101.                 check enabled and in ring 3.
  5102. #UD    #UD    #UD    #UD    If CR0.EM = 1
  5103. #NM    #NM    #NM    #NM    If CR0.TS = 1
  5104. #MF    #MF    #MF    #MF    If pending FPU Exception
  5105. #13        #13        If any part of the the operand lies outside of
  5106.                 the EA space from 0 to FFFFH
  5107. ++++++++++++++++++++++++++++++++++++++
  5108. COP & Times:
  5109.  
  5110. PSUBD    mm,mm/m64    0FH FAH    PostByte
  5111.  
  5112.      P55C:    n/a
  5113. future P6:    n/a
  5114.  
  5115. ----------O-PSUBSB---------------------------------
  5116. OPCODE PSUBSB    -  Packed Subtract with Saturation Bytes
  5117.  
  5118. CPU:  all which supported IA MMX:
  5119.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  5120. Type of Instruction: User
  5121.  
  5122. Instruction: PSUBSB  dest,src
  5123.  
  5124. Description:
  5125.  
  5126.     dest[7..0]    <-   SaturateToSignedByte(dest[7..0]   - src[7..0])
  5127.     dest[15..8]   <-   SaturateToSignedByte(dest[15..8]  - src[15..8])
  5128.     dest[23..16]  <-   SaturateToSignedByte(dest[23..16] - src[23..16])
  5129.     dest[31..24]  <-   SaturateToSignedByte(dest[31..24] - src[31..24])
  5130.     dest[39..32]  <-   SaturateToSignedByte(dest[39..32] - src[39..32])
  5131.     dest[47..40]  <-   SaturateToSignedByte(dest[47..40] - src[47..40])
  5132.     dest[55..48]  <-   SaturateToSignedByte(dest[55..48] - src[55..48])
  5133.     dest[63..56]  <-   SaturateToSignedByte(dest[63..56] - src[63..56])
  5134.  
  5135. Note:      This instruction subtract signed packed byte in MMXregister/memory
  5136.     from signed packed byte in MMX register and saturate.
  5137.       If the result is larger or smaller than the range of a signed byte,
  5138.     the value is saturated; in the case of an overflow - to 7FH, and the
  5139.     case of an underflow - to 80H
  5140.  
  5141. Flags affected:     None
  5142.  
  5143. Exceptions:
  5144.  
  5145. RM    PM    VM    SMM    Description
  5146.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  5147.     #SS(0)            If illegal memory operand's EA in SS
  5148.       #PF(fcode)        If page fault
  5149.     #AC    #AC        If unaligned memory reference then alignment
  5150.                 check enabled and in ring 3.
  5151. #UD    #UD    #UD    #UD    If CR0.EM = 1
  5152. #NM    #NM    #NM    #NM    If CR0.TS = 1
  5153. #MF    #MF    #MF    #MF    If pending FPU Exception
  5154. #13        #13        If any part of the the operand lies outside of
  5155.                 the EA space from 0 to FFFFH
  5156. ++++++++++++++++++++++++++++++++++++++
  5157. COP & Times:
  5158.  
  5159. PSUBSB    mm,mm/m64    0FH E8H    PostByte
  5160.  
  5161.      P55C:    n/a
  5162. future P6:    n/a
  5163.  
  5164. ----------O-PSUBSIW----------------------------
  5165. OPCODE PSUBSIW    - Packed Subtract with Saturation, using Implied Destination
  5166.  
  5167. CPU: Cyrix with Extended MMX Instruction Set
  5168. Type of Instruction: User
  5169.  
  5170. Instruction:    PSUBSIW    dest, src
  5171.  
  5172. Description:
  5173.  
  5174.     mmi[15..0] <- SaturateToSignedWord(dest[15..0] - src[15..0]);
  5175.     mmi[31..16] <- SaturateToSignedWord(dest[31..16] - src[31..16]);
  5176.     mmi[47..32] <- SaturateToSignedWord(dest[47..32] - src[47..32]);
  5177.     mmi[63..48] <- SaturateToSignedWord(dest[63..48] - src[63..48]);
  5178.  
  5179. Note:    mmi is implied MMX register.
  5180.  
  5181. Flags Affected:    None
  5182.  
  5183. ++++++++++++++++++++++++++++++++++
  5184. COP & Times:
  5185.  
  5186. PSUBSIW    mm,mm/m64    0FH 55H PostByte
  5187.  
  5188. ----------O-PSUBSW---------------------------------
  5189. OPCODE PSUBSW    -  Packed Subtract with Saturation Words
  5190.  
  5191. CPU:  all which supported IA MMX:
  5192.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  5193. Type of Instruction: User
  5194.  
  5195. Instruction: PSUBSW  dest,src
  5196.  
  5197. Description:
  5198.  
  5199.     dest[15..0]   <-   SaturateToSignedWord(dest[15..0]  - src[15..0])
  5200.     dest[31..16]  <-   SaturateToSignedWord(dest[31..16] - src[31..16])
  5201.     dest[47..32]  <-   SaturateToSignedWord(dest[47..32] - src[47..32])
  5202.     dest[63..48]  <-   SaturateToSignedWord(dest[63..48] - src[63..48])
  5203.  
  5204. Note:      This instruction subtract signed packed word in MMXregister/memory
  5205.     from signed packed word in MMX register and saturate.
  5206.       If the result is larger or smaller than the range of a signed word,
  5207.     the value is saturated; in the case of an overflow - to 7FFFH, and the
  5208.     case of an underflow - to 8000H
  5209.  
  5210. Flags affected:     None
  5211.  
  5212. Exceptions:
  5213.  
  5214. RM    PM    VM    SMM    Description
  5215.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  5216.     #SS(0)            If illegal memory operand's EA in SS
  5217.       #PF(fcode)        If page fault
  5218.     #AC    #AC        If unaligned memory reference then alignment
  5219.                 check enabled and in ring 3.
  5220. #UD    #UD    #UD    #UD    If CR0.EM = 1
  5221. #NM    #NM    #NM    #NM    If CR0.TS = 1
  5222. #MF    #MF    #MF    #MF    If pending FPU Exception
  5223. #13        #13        If any part of the the operand lies outside of
  5224.                 the EA space from 0 to FFFFH
  5225. ++++++++++++++++++++++++++++++++++++++
  5226. COP & Times:
  5227.  
  5228. PSUBSW    mm,mm/m64    0FH E9H    PostByte
  5229.  
  5230.      P55C:    n/a
  5231. future P6:    n/a
  5232.  
  5233. ----------O-PSUBUSB--------------------------------
  5234. OPCODE PSUBUSB    -  Packed Subtract Unsigned with Saturation Bytes
  5235.  
  5236. CPU:  all which supported IA MMX:
  5237.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  5238. Type of Instruction: User
  5239.  
  5240. Instruction: PSUBUSB  dest,src
  5241.  
  5242. Description:
  5243.  
  5244.     dest[7..0]    <-   SaturateToUnsignedByte(dest[7..0]   - src[7..0])
  5245.     dest[15..8]   <-   SaturateToUnsignedByte(dest[15..8]  - src[15..8])
  5246.     dest[23..16]  <-   SaturateToUnsignedByte(dest[23..16] - src[23..16])
  5247.     dest[31..24]  <-   SaturateToUnsignedByte(dest[31..24] - src[31..24])
  5248.     dest[39..32]  <-   SaturateToUnsignedByte(dest[39..32] - src[39..32])
  5249.     dest[47..40]  <-   SaturateToUnsignedByte(dest[47..40] - src[47..40])
  5250.     dest[55..48]  <-   SaturateToUnsignedByte(dest[55..48] - src[55..48])
  5251.     dest[63..56]  <-   SaturateToUnsignedByte(dest[63..56] - src[63..56])
  5252.  
  5253. Note:      This instruction subtract unsigned packed byte in MMXregister/memory
  5254.     from unsigned packed byte in MMX register and saturate.
  5255.       If the result element is less than zero (a negative value), it is
  5256.     saturated to 00H
  5257.  
  5258. Flags affected:     None
  5259.  
  5260. Exceptions:
  5261.  
  5262. RM    PM    VM    SMM    Description
  5263.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  5264.     #SS(0)            If illegal memory operand's EA in SS
  5265.       #PF(fcode)        If page fault
  5266.     #AC    #AC        If unaligned memory reference then alignment
  5267.                 check enabled and in ring 3.
  5268. #UD    #UD    #UD    #UD    If CR0.EM = 1
  5269. #NM    #NM    #NM    #NM    If CR0.TS = 1
  5270. #MF    #MF    #MF    #MF    If pending FPU Exception
  5271. #13        #13        If any part of the the operand lies outside of
  5272.                 the EA space from 0 to FFFFH
  5273. ++++++++++++++++++++++++++++++++++++++
  5274. COP & Times:
  5275.  
  5276. PSUBUSB    mm,mm/m64    0FH D8H    PostByte
  5277.  
  5278.      P55C:    n/a
  5279. future P6:    n/a
  5280.  
  5281. ----------O-PSUBUSW--------------------------------
  5282. OPCODE PSUBUSW    -  Packed Subtract Unsigned with Saturation Bytes
  5283.  
  5284. CPU:  all which supported IA MMX:
  5285.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  5286. Type of Instruction: User
  5287.  
  5288. Instruction: PSUBUSW  dest,src
  5289.  
  5290. Description:
  5291.  
  5292.     dest[15..0]   <-   SaturateToUnsignedWord(dest[15..0]  - src[15..0])
  5293.     dest[31..16]  <-   SaturateToUnsignedWord(dest[31..16] - src[31..16])
  5294.     dest[47..32]  <-   SaturateToUnsignedWord(dest[47..32] - src[47..32])
  5295.     dest[63..48]  <-   SaturateToUnsignedWord(dest[63..48] - src[63..48])
  5296.  
  5297. Note:      This instruction subtract unsigned packed word in MMXregister/memory
  5298.     from unsigned packed word in MMX register and saturate.
  5299.       If the result element is less than zero (a negative value), it is
  5300.     saturated to 0000H
  5301.  
  5302. Flags affected:     None
  5303.  
  5304. Exceptions:
  5305.  
  5306. RM    PM    VM    SMM    Description
  5307.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  5308.     #SS(0)            If illegal memory operand's EA in SS
  5309.       #PF(fcode)        If page fault
  5310.     #AC    #AC        If unaligned memory reference then alignment
  5311.                 check enabled and in ring 3.
  5312. #UD    #UD    #UD    #UD    If CR0.EM = 1
  5313. #NM    #NM    #NM    #NM    If CR0.TS = 1
  5314. #MF    #MF    #MF    #MF    If pending FPU Exception
  5315. #13        #13        If any part of the the operand lies outside of
  5316.                 the EA space from 0 to FFFFH
  5317. ++++++++++++++++++++++++++++++++++++++
  5318. COP & Times:
  5319.  
  5320. PSUBUSW    mm,mm/m64    0FH D9H    PostByte
  5321.  
  5322.      P55C:    n/a
  5323. future P6:    n/a
  5324.  
  5325. ----------O-PSUBW----------------------------------
  5326. OPCODE PSUBW    -  Packed Subtract Words
  5327.  
  5328. CPU:  all which supported IA MMX:
  5329.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  5330. Type of Instruction: User
  5331.  
  5332. Instruction: PSUBW  dest,src
  5333.  
  5334. Description:
  5335.  
  5336.     dest[15..0]    <-    dest[15..0]  - src[15..0]
  5337.     dest[31..16]    <-    dest[31..16] - src[31..16]
  5338.     dest[47..32]    <-    dest[47..32] - src[47..32]
  5339.     dest[63..48]    <-    dest[63..48] - src[63..48]
  5340.  
  5341. Note:      This instruction subtract packed word in MMXregister/memory from
  5342.     packed word in MMX register.
  5343.  
  5344. Flags affected:     None
  5345.  
  5346. Exceptions:
  5347.  
  5348. RM    PM    VM    SMM    Description
  5349.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  5350.     #SS(0)            If illegal memory operand's EA in SS
  5351.       #PF(fcode)        If page fault
  5352.     #AC    #AC        If unaligned memory reference then alignment
  5353.                 check enabled and in ring 3.
  5354. #UD    #UD    #UD    #UD    If CR0.EM = 1
  5355. #NM    #NM    #NM    #NM    If CR0.TS = 1
  5356. #MF    #MF    #MF    #MF    If pending FPU Exception
  5357. #13        #13        If any part of the the operand lies outside of
  5358.                 the EA space from 0 to FFFFH
  5359. ++++++++++++++++++++++++++++++++++++++
  5360. COP & Times:
  5361.  
  5362. PSUBW    mm,mm/m64    0FH F9H    PostByte
  5363.  
  5364.      P55C:    n/a
  5365. future P6:    n/a
  5366.  
  5367. ----------O-PUNPCKHBW------------------------------
  5368. OPCODE PUNPCKHBW    -  Unpack High Bytes to Words
  5369.  
  5370. CPU:  all which supported IA MMX:
  5371.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  5372. Type of Instruction: User
  5373.  
  5374. Instruction: PUNPCKHBW    dest,src
  5375.  
  5376. Description:
  5377.  
  5378.     dest[63..56]   <-   src[63..56]
  5379.     dest[55..48]   <-   dest[63..56]
  5380.     dest[47..40]   <-   src[55..48]
  5381.     dest[39..32]   <-   dest[55..48]
  5382.     dest[31..24]   <-   src[47..40]
  5383.     dest[23..16]   <-   dest[47..40]
  5384.     dest[15..8]    <-   src[39..32]
  5385.     dest[7..0]     <-   dest[39..32]
  5386.  
  5387. Note:      This instruction unpack and interleave the high-order data elements
  5388.     of the destination and source operands into the destination operand.
  5389.     The low-order data elements are ignored.
  5390.       When unpacking from a memory operand, the full 64-bit operand is
  5391.     accessed from memory. The instruction uses only the high-order 32 bits.
  5392.       If the source operand is all zeros, the result is a zero extension of
  5393.     the high-order elements of the destination operand. When using
  5394.     PUNPCKHBW instruction the bytes are zero extended, or unpacked into
  5395.     unsigned words.
  5396.  
  5397. Flags affected:     None
  5398.  
  5399. Exceptions:
  5400.  
  5401. RM    PM    VM    SMM    Description
  5402.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  5403.     #SS(0)            If illegal memory operand's EA in SS
  5404.       #PF(fcode)        If page fault
  5405.     #AC    #AC        If unaligned memory reference then alignment
  5406.                 check enabled and in ring 3.
  5407. #UD    #UD    #UD    #UD    If CR0.EM = 1
  5408. #NM    #NM    #NM    #NM    If CR0.TS = 1
  5409. #MF    #MF    #MF    #MF    If pending FPU Exception
  5410. #13        #13        If any part of the the operand lies outside of
  5411.                 the EA space from 0 to FFFFH
  5412. ++++++++++++++++++++++++++++++++++++++
  5413. COP & Times:
  5414.  
  5415. PUNPCKHBW    mm,mm/m64    0FH 68H    PostByte
  5416.  
  5417.      P55C:    n/a
  5418. future P6:    n/a
  5419.  
  5420. ----------O-PUNPCKHDQ------------------------------
  5421. OPCODE PUNPCKHDQ    -  Unpack High Dwords to Qwords
  5422.  
  5423. CPU:  all which supported IA MMX:
  5424.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  5425. Type of Instruction: User
  5426.  
  5427. Instruction: PUNPCKHDQ    dest,src
  5428.  
  5429. Description:
  5430.  
  5431.     dest[63..32]   <-   src[63..32]
  5432.     dest[31..0]    <-   dest[63..32]
  5433.  
  5434. Note:      This instruction unpack and interleave the high-order data elements
  5435.     of the destination and source operands into the destination operand.
  5436.     The low-order data elements are ignored.
  5437.       When unpacking from a memory operand, the full 64-bit operand is
  5438.     accessed from memory. The instruction uses only the high-order 32 bits.
  5439.       If the source operand is all zeros, the result is a zero extension of
  5440.     the high-order elements of the destination operand.
  5441.  
  5442. Flags affected:     None
  5443.  
  5444. Exceptions:
  5445.  
  5446. RM    PM    VM    SMM    Description
  5447.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  5448.     #SS(0)            If illegal memory operand's EA in SS
  5449.       #PF(fcode)        If page fault
  5450.     #AC    #AC        If unaligned memory reference then alignment
  5451.                 check enabled and in ring 3.
  5452. #UD    #UD    #UD    #UD    If CR0.EM = 1
  5453. #NM    #NM    #NM    #NM    If CR0.TS = 1
  5454. #MF    #MF    #MF    #MF    If pending FPU Exception
  5455. #13        #13        If any part of the the operand lies outside of
  5456.                 the EA space from 0 to FFFFH
  5457. ++++++++++++++++++++++++++++++++++++++
  5458. COP & Times:
  5459.  
  5460. PUNPCKHDQ    mm,mm/m64    0FH 6AH    PostByte
  5461.  
  5462.      P55C:    n/a
  5463. future P6:    n/a
  5464.  
  5465. ----------O-PUNPCKHWD------------------------------
  5466. OPCODE PUNPCKHWD    -  Unpack High Words to Dwords
  5467.  
  5468. CPU:  all which supported IA MMX:
  5469.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  5470. Type of Instruction: User
  5471.  
  5472. Instruction: PUNPCKHWD    dest,src
  5473.  
  5474. Description:
  5475.  
  5476.     dest[63..56]   <-   src[63..48]
  5477.     dest[47..32]   <-   dest[63..48]
  5478.     dest[31..16]   <-   src[47..32]
  5479.     dest[15..0]    <-   dest[47..32]
  5480.  
  5481. Note:      This instruction unpack and interleave the high-order data elements
  5482.     of the destination and source operands into the destination operand.
  5483.     The low-order data elements are ignored.
  5484.       When unpacking from a memory operand, the full 64-bit operand is
  5485.     accessed from memory. The instruction uses only the high-order 32 bits.
  5486.       If the source operand is all zeros, the result is a zero extension of
  5487.     the high-order elements of the destination operand. When using
  5488.     PUNPCKHWD instruction the words are zero extended, or unpacked into
  5489.     unsigned doublewords.
  5490.  
  5491. Flags affected:     None
  5492.  
  5493. Exceptions:
  5494.  
  5495. RM    PM    VM    SMM    Description
  5496.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  5497.     #SS(0)            If illegal memory operand's EA in SS
  5498.       #PF(fcode)        If page fault
  5499.     #AC    #AC        If unaligned memory reference then alignment
  5500.                 check enabled and in ring 3.
  5501. #UD    #UD    #UD    #UD    If CR0.EM = 1
  5502. #NM    #NM    #NM    #NM    If CR0.TS = 1
  5503. #MF    #MF    #MF    #MF    If pending FPU Exception
  5504. #13        #13        If any part of the the operand lies outside of
  5505.                 the EA space from 0 to FFFFH
  5506. ++++++++++++++++++++++++++++++++++++++
  5507. COP & Times:
  5508.  
  5509. PUNPCKHWD    mm,mm/m64    0FH 69H    PostByte
  5510.  
  5511.      P55C:    n/a
  5512. future P6:    n/a
  5513.  
  5514. ----------O-PUNPCKLBW------------------------------
  5515. OPCODE PUNPCKLBW    -  Unpack Low Bytes to Words
  5516.  
  5517. CPU:  all which supported IA MMX:
  5518.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  5519. Type of Instruction: User
  5520.  
  5521. Instruction: PUNPCKLBW    dest,src
  5522.  
  5523. Description:
  5524.  
  5525.     dest[63..56]   <-   src[31..24]
  5526.     dest[55..48]   <-   dest[31..24]
  5527.     dest[47..40]   <-   src[23..16]
  5528.     dest[39..32]   <-   dest[23..16]
  5529.     dest[31..24]   <-   src[15..8]
  5530.     dest[23..16]   <-   dest[15..8]
  5531.     dest[15..8]    <-   src[7..0]
  5532.     dest[7..0]     <-   dest[7..0]
  5533.  
  5534. Note:      This instruction unpack and interleave the low-order data elements
  5535.     of the destination and source operands into the destination operand.
  5536.     The high-order data elements are ignored.
  5537.       When the source data comes from 64-bit registers, the upper 32 bits
  5538.     are ignored.
  5539.       When unpacking from a memory operand, only 32 bits are accessed. The
  5540.     instruction uses all 32 bits.
  5541.       If the source operand is all zeros, the result is a zero extension of
  5542.     the low-order elements of the destination operand. When using
  5543.     PUNPCKLBW instruction the bytes are zero extended, or unpacked into
  5544.     unsigned words.
  5545.  
  5546. Flags affected:     None
  5547.  
  5548. Exceptions:
  5549.  
  5550. RM    PM    VM    SMM    Description
  5551.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  5552.     #SS(0)            If illegal memory operand's EA in SS
  5553.       #PF(fcode)        If page fault
  5554.     #AC    #AC        If unaligned memory reference then alignment
  5555.                 check enabled and in ring 3.
  5556. #UD    #UD    #UD    #UD    If CR0.EM = 1
  5557. #NM    #NM    #NM    #NM    If CR0.TS = 1
  5558. #MF    #MF    #MF    #MF    If pending FPU Exception
  5559. #13        #13        If any part of the the operand lies outside of
  5560.                 the EA space from 0 to FFFFH
  5561. ++++++++++++++++++++++++++++++++++++++
  5562. COP & Times:
  5563.  
  5564. PUNPCKLBW    mm,mm/m32    0FH 60H    PostByte
  5565.  
  5566.      P55C:    n/a
  5567. future P6:    n/a
  5568.  
  5569. ----------O-PUNPCKLDQ------------------------------
  5570. OPCODE PUNPCKLDQ    -  Unpack Low Dwords to Qwords
  5571.  
  5572. CPU:  all which supported IA MMX:
  5573.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  5574. Type of Instruction: User
  5575.  
  5576. Instruction: PUNPCKLDQ    dest,src
  5577.  
  5578. Description:
  5579.  
  5580.     dest[63..32]   <-   src[31..0]
  5581.     dest[31..0]    <-   dest[31..0]
  5582.  
  5583. Note:      This instruction unpack and interleave the low-order data elements
  5584.     of the destination and source operands into the destination operand.
  5585.       When the source data comes from 64-bit registers, the upper 32 bits
  5586.     are ignored.
  5587.       When unpacking from a memory operand, only 32 bits are accessed. The
  5588.     instruction uses all 32 bits.
  5589.       If the source operand is all zeros, the result is a zero extension of
  5590.     the low-order elements of the destination operand.
  5591.  
  5592. Flags affected:     None
  5593.  
  5594. Exceptions:
  5595.  
  5596. RM    PM    VM    SMM    Description
  5597.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  5598.     #SS(0)            If illegal memory operand's EA in SS
  5599.       #PF(fcode)        If page fault
  5600.     #AC    #AC        If unaligned memory reference then alignment
  5601.                 check enabled and in ring 3.
  5602. #UD    #UD    #UD    #UD    If CR0.EM = 1
  5603. #NM    #NM    #NM    #NM    If CR0.TS = 1
  5604. #MF    #MF    #MF    #MF    If pending FPU Exception
  5605. #13        #13        If any part of the the operand lies outside of
  5606.                 the EA space from 0 to FFFFH
  5607. ++++++++++++++++++++++++++++++++++++++
  5608. COP & Times:
  5609.  
  5610. PUNPCKLDQ    mm,mm/m32    0FH 62H    PostByte
  5611.  
  5612.      P55C:    n/a
  5613. future P6:    n/a
  5614.  
  5615. ----------O-PUNPCKLWD------------------------------
  5616. OPCODE PUNPCKLWD    -  Unpack Low Words to Dwords
  5617.  
  5618. CPU:  all which supported IA MMX:
  5619.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  5620. Type of Instruction: User
  5621.  
  5622. Instruction: PUNPCKLWD    dest,src
  5623.  
  5624. Description:
  5625.  
  5626.     dest[63..48]   <-   src[31..16]
  5627.     dest[47..32]   <-   dest[31..16]
  5628.     dest[31..16]   <-   src[15..0]
  5629.     dest[15..0]    <-   dest[15..0]
  5630.  
  5631. Note:      This instruction unpack and interleave the low-order data elements
  5632.     of the destination and source operands into the destination operand.
  5633.       When the source data comes from 64-bit registers, the upper 32 bits
  5634.     are ignored.
  5635.       When unpacking from a memory operand, only 32 bits are accessed. The
  5636.     instruction uses all 32 bits.
  5637.       If the source operand is all zeros, the result is a zero extension of
  5638.     the low-order elements of the destination operand. When using
  5639.     PUNPCKLWD instruction the words are zero extended, or unpacked into
  5640.     unsigned doublewords.
  5641.  
  5642. Flags affected:     None
  5643.  
  5644. Exceptions:
  5645.  
  5646. RM    PM    VM    SMM    Description
  5647.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  5648.     #SS(0)            If illegal memory operand's EA in SS
  5649.       #PF(fcode)        If page fault
  5650.     #AC    #AC        If unaligned memory reference then alignment
  5651.                 check enabled and in ring 3.
  5652. #UD    #UD    #UD    #UD    If CR0.EM = 1
  5653. #NM    #NM    #NM    #NM    If CR0.TS = 1
  5654. #MF    #MF    #MF    #MF    If pending FPU Exception
  5655. #13        #13        If any part of the the operand lies outside of
  5656.                 the EA space from 0 to FFFFH
  5657. ++++++++++++++++++++++++++++++++++++++
  5658. COP & Times:
  5659.  
  5660. PUNPCKLWD    mm,mm/m32    0FH 61H    PostByte
  5661.  
  5662.      P55C:    n/a
  5663. future P6:    n/a
  5664.  
  5665. ----------O-PXOR-----------------------------------
  5666. OPCODE PXOR    -  Bitwise Logical Exclusive OR
  5667.  
  5668. CPU:  all which supported IA MMX:
  5669.       Pentium (P55C only), Pentium (tm) Pro  (P6) future models
  5670. Type of Instruction: User
  5671.  
  5672. Instruction: PXOR  dest,src
  5673.  
  5674. Description:
  5675.  
  5676.     dest    <-   dest XOR src
  5677.  
  5678. Note:      XOR 64 bits from MMXregister/memory to MMX register.
  5679.  
  5680. Flags affected:     None
  5681.  
  5682. Exceptions:
  5683.  
  5684. RM    PM    VM    SMM    Description
  5685.     #GP(0)            If Illegal memory operand's EA in CS,DS,ES,FS,GS
  5686.     #SS(0)            If illegal memory operand's EA in SS
  5687.       #PF(fcode)        If page fault
  5688.     #AC    #AC        If unaligned memory reference then alignment
  5689.                 check enabled and in ring 3.
  5690. #UD    #UD    #UD    #UD    If CR0.EM = 1
  5691. #NM    #NM    #NM    #NM    If CR0.TS = 1
  5692. #MF    #MF    #MF    #MF    If pending FPU Exception
  5693. #13        #13        If any part of the the operand lies outside of
  5694.                 the EA space from 0 to FFFFH
  5695. ++++++++++++++++++++++++++++++++++++++
  5696. COP & Times:
  5697.  
  5698. PXOR    mm,mm/m64    0FH EFH    PostByte
  5699.  
  5700.      P55C:    n/a
  5701. future P6:    n/a
  5702.  
  5703. ----------O-RDMSR----------------------------------
  5704. OPCODE RDMSR  - Read From Model Specified Register
  5705.  
  5706. CPU:  Pentium (tm), IBM 386SLC,486SLC,486SLC2
  5707. Type of Instruction: System
  5708.  
  5709. Instruction: RDMSR
  5710.  
  5711. Description:
  5712.  
  5713.     IF (ECX is valid number of MSR) and (CPL=0)  THEN
  5714.           {
  5715.           EDX:EAX <- MSR [ECX];
  5716.           }
  5717.         ELSE
  5718.           {
  5719.           General Protection Fault  INT 0DH (0)
  5720.           }
  5721.     END
  5722.  
  5723. Refer to Appendix W for more info.
  5724.  
  5725. Flags Affected: None
  5726.  
  5727. CPU mode: RM,PM0,SMM
  5728.  
  5729. Physical Form:         RDMSR
  5730. COP (Code of Operation): 0FH 32H
  5731. Clocks:         Pentium   : 20-24
  5732.  
  5733. ----------O-RDPMC----------------------------------
  5734. OPCODE RDPMC  - Read Perfomance Monitoring Counters
  5735.  
  5736. CPU:  Pentium (tm) Pro    (P6)
  5737. Type of Instruction: User
  5738.  
  5739. Instruction: RDPMC
  5740.  
  5741. Description:
  5742.  
  5743.     IF ((CPL<>0) AND (CR4.PCE==0))
  5744.     THEN { INT D (0) ; GENERAL PROTECTION FAULT }
  5745.     ELSE { EDX:EAX <- PERFOMANCE_MONITORING_REGISTER[ECX] }
  5746.     Note: Valid ECX values is 0,1.
  5747.           Invalid ECX values call INT D(0)
  5748.  
  5749. Note:  CR4.PSE = bit 8 of CR4
  5750.  
  5751. Note: Perfomance Monitoring Registers (PMR) are aliases to some Perfomance
  5752.       Monitoring MSRs:
  5753.  
  5754.       MSR 12h is Counter #0 (Read/Write) (Perfomance Monitoring Counter # 0)
  5755.         bits    Description
  5756.         63..40    Reserved
  5757.         39..0    Current counter value
  5758.  
  5759.       MSR 13h is Counter #1 (Read/Write) (Perfomance Monitoring Counter # 1)
  5760.         bits    Description
  5761.         63..40    Reserved
  5762.         39..0    Current counter value
  5763.  
  5764. ++++++++++++++++++++++++++++++++++++++
  5765. COP & Times:
  5766.  
  5767.    RDPMC    0FH 33H
  5768.     P6:     n/a
  5769.  
  5770. ----------O-RDSHR----------------------------------
  5771. OPCODE RDSHR  - Read SMM Header Pointer Register
  5772.  
  5773. CPU:  Cyrix Cx6x86MX
  5774. Type of Instruction: SMM mode only
  5775.  
  5776. Instruction:  RDSHR dest
  5777.  
  5778. Description:
  5779.  
  5780.     dest <- SMHR  (SMM Header pointer Register)
  5781.  
  5782. Note: Format of SMHR:
  5783.     Bits    Description
  5784.     31..2    SMM Header pointer address
  5785.     1    Reserved
  5786.     0    (Valid)
  5787.         if =1, then address valid
  5788.  
  5789. Note:    SMHR pointed to phisical address SMM space area,
  5790.     where will be saved non-SMM contex when entered SMM.
  5791.  
  5792.     Format of SMM Header (for Cx6x86MX):
  5793.     Address       Size      Description
  5794.     (Relative (bit)
  5795.     to SMH
  5796.     pointer)
  5797.     +00    32    DR7
  5798.     -04h    32    EFLAGS
  5799.     -08h    32    CR0
  5800.     -0Ch    32    current EIP
  5801.     -10h    32    next    EIP
  5802.     -14h    16    CS selector
  5803.     -16h    16    Reserved
  5804.     -18h    64    CS descriptor
  5805.     -20h    16    Context
  5806.             all reserved , but
  5807.             22..21    CPL
  5808.     -22h    16    Context
  5809.             all reserved, but
  5810.             15 N  (Nested SMI indicator)
  5811.                 if = 1, current SMI serviced from SMM.
  5812.             13 IS (Internal SMI indicator)
  5813.                 if = 1, current SMI is result of internal SMI
  5814.                     event.
  5815.                 if = 0, current SMI result of external event
  5816.             4  H  (SMI during CPU HALT state indicator)
  5817.                 if = 1, CPU was in halt or shutdown state,
  5818.                     before SMI.
  5819.             3  S  (Software SMM entry indicator)
  5820.                 if = 1, SMM is result of SMINT instruction
  5821.             2  P  (REP INSx/REP OUTSx indicator)
  5822.                 if = 1, current instruction have REP pfix.
  5823.             1  I  (IN,INSx,OUT,OUTx indicator)
  5824.                 if = 1, current instruction perform I/O
  5825.                     read/write
  5826.             0  C  (Code segment writable indicator)
  5827.                 if = 1, current code segment is writable,
  5828.                 if = 0, ---//----  is not writable.
  5829.     -24h    16    I/O Data Size
  5830.     -26h    16    I/O Write Address
  5831.     -28h    32    I/O Write Data
  5832.     -2Ch    32    ESI or EDI
  5833.         total size of SMM header = 30h
  5834.  
  5835. Flags Affected: None
  5836.  
  5837. CPU mode: SMM
  5838.  
  5839. ++++++++++++++++
  5840.  
  5841. Physical Form: RDSHR    reg/mem32
  5842. COP (Code of Operation)     : 0FH 36H Postbyte
  5843. Clocks      Cx6x86MX: n/a
  5844.  
  5845. ----------O-RDTSC----------------------------------
  5846. OPCODE RDTSC  - Read From Time Stamp Counter
  5847.  
  5848. CPU:  Pentium (tm), Pentium Pro, AMD Am5k86
  5849. Type of Instruction: System/User
  5850.  
  5851. Instruction: RDTSC
  5852.  
  5853. Description:
  5854.  
  5855.     IF (CR4.TSD=0) or ((CR4.TSD=1) and (CPL=0))  THEN
  5856.           {
  5857.           EDX:EAX <- TSC;
  5858.           }
  5859.         ELSE
  5860.           {
  5861.           General Protection Fault  INT 0DH (0)
  5862.           }
  5863.     END
  5864.  
  5865. Note: TSC is one of MSR and after global hardware reset (not SRESET , but
  5866. RESET ) it clear to 0000000000000000H.
  5867.       TSC is MSR index 10h. TSC may set using WRMSR instruction.
  5868.       TSC incremented every CPU core clock cycle.
  5869.  
  5870. Flags Affected: None
  5871.  
  5872. CPU mode: RM,PM0,SMM
  5873.       ; PM,VM if enable
  5874.  
  5875. Physical Form:         RDTSC
  5876. COP (Code of Operation): 0FH 31H
  5877. Clocks:         Pentium   : n/a [20-24]
  5878.  
  5879. ----------O-REPC-----------------------------------
  5880. OPCODE REPC  - Repeat While Carry Flag
  5881.  
  5882. CPU:  NEC/Sony all V-series
  5883. Type of Instruction: Prefix
  5884.  
  5885. Instruction: REPC
  5886.  
  5887. Description:
  5888.  
  5889.     DO
  5890.          CX=CX-1;
  5891.          SERVICE_PENDING_INTERRUPT;
  5892.          STRING_INSTRUCTION;
  5893.        LOOPWHILE ((CX<>0) AND (CF==1));
  5894.  
  5895. Flags Affected: None
  5896.  
  5897. CPU Mode: RM 8086
  5898.  
  5899. Physical Form:         REPC
  5900. COP (Code of Operation): 65H
  5901. Clocks:          NEC V20  : 2
  5902.           NEC V30  : 2
  5903.  
  5904. ----------O-REPNC----------------------------------
  5905. OPCODE REPNC  - Repeat While Not Carry Flag
  5906.  
  5907. CPU:  NEC/Sony all V-series
  5908. Type of Instruction: Prefix
  5909.  
  5910. Instruction: REPNC
  5911.  
  5912. Description:
  5913.  
  5914.     DO
  5915.          CX=CX-1;
  5916.          SERVICE_PENDING_INTERRUPT;
  5917.          STRING_INSTRUCTION;
  5918.        LOOPWHILE ((CX<>0) AND (CF<>1));
  5919.  
  5920. Flags Affected: None
  5921.  
  5922. CPU mode: RM 8086
  5923.  
  5924. Physical Form:         REPNC
  5925. COP (Code of Operation): 64H
  5926. Clocks:          NEC V20  : 2
  5927.           NEC V30  : 2
  5928.  
  5929. ----------O-RES3-----------------------------------
  5930. OPCODE RES3  - Restore All  CPU Registers
  5931.  
  5932. CPU:  AMD Am386SXLV, Am386DXLV
  5933. Type of Instruction: System Operation
  5934.             (Work only then CPL=0)
  5935.  
  5936. Instruction: RES3
  5937.  
  5938. Description:
  5939.           Load All Registers (Include Shadow Registers) from Table
  5940.           Which Begin on  place pointed ES:EDI
  5941.  
  5942. Note:
  5943.           This instruction is AMD analog Intel's LOADALL instruction
  5944.           but it's more i.c. return from SMM used this instruction.
  5945.  
  5946.           Then in SMM table is in SMRAM, then non SMM then table is
  5947.           in main memory.
  5948.  
  5949. Format of RES3 Table:
  5950.     (Table )
  5951.            Offset  Len  Description
  5952.         0H    4    CR0
  5953.         4H    4    EFLAGS
  5954.         8H    4    EIP
  5955.         CH    4    EDI
  5956.         10H    4    ESI
  5957.         14H    4    EBP
  5958.         18H    4    ESP
  5959.         1CH    4    EBX
  5960.         20H    4    EDX
  5961.         24H    4    ESX
  5962.         28H    4    EAX
  5963.         2CH    4    DR6
  5964.         30H    4    DR7
  5965.         34H    4    TR     (16 bit, zero filled up)
  5966.         38H    4    LDT  ---------
  5967.         3CH    4    GS   ---------
  5968.         40H    4    FS   ---------
  5969.         44H    4    DS   ---------
  5970.         48H    4    SS   ---------
  5971.         4CH    4    CS   ---------
  5972.         50H    4    ES   ---------
  5973.         54H    4    TSS.attrib
  5974.         58H    4    TSS.base
  5975.         5CH    4    TSS.limit
  5976.         60H    4    Reserved
  5977.         64H    4    IDT.base
  5978.         68H    4    IDT.limit
  5979.         6CH    4    REP OUTS overrun flag
  5980.         70H    4    GDT.base
  5981.         74H    4    GDT.limit
  5982.         78H    4    LDT.attrib
  5983.         7CH    4    LDT.base
  5984.         80H    4    LDT.limit
  5985.         84H    4    GS.attrib
  5986.         88H    4    GS.base
  5987.         8CH    4    GS.limit
  5988.         90H    4    FS.attrib
  5989.         94H    4    FS.base
  5990.         98H    4    FS.limit
  5991.         9CH    4    DS.attrib
  5992.         A0H    4    DS.base
  5993.         A4H    4    DS.limit
  5994.         A8H    4    SS.attrib
  5995.         ACH    4    SS.base
  5996.         B0H    4    SS.limit
  5997.         B4H    4    CS.attrib
  5998.         B8H    4    CS.base
  5999.         BCH    4    CS.limit
  6000.         C0H    4    ES.attrib
  6001.         C4H    4    ES.base
  6002.         C8H    4    ES.limit
  6003.                 Unknown Unusable area
  6004.         100H    4    Temporary register
  6005.         104H    4    -------------
  6006.         108H    4    -------------
  6007.         10CH    4    -------------
  6008.         110H    4    -------------
  6009.         114H    4    -------------
  6010.         118H    4    -------------
  6011.         11CH    4    -------------
  6012.         120H    4    -------------
  6013.         124H    4    Last EIP (Last instruction EIP for Restart)
  6014.  
  6015.     See APPENDIX X for more info.
  6016.  
  6017. Format    of Attrib field:
  6018.  
  6019.            Byte    Description
  6020.            0    0s
  6021.            1    AR (Access Right) byte in the Descriptor format
  6022.             Note:
  6023.                P bit is a valid bit
  6024.                if valid bit=0 then Shadow Register is invalid and
  6025.                   INT 0DH - General Protection Fault call
  6026.                DPL of SS,CS det. CPL
  6027.            2-3    0s
  6028.  
  6029. Flags Affected: All (FLAGS Register Reload)
  6030.  
  6031. CPU mode: RM,PM0,SMM
  6032.  
  6033. Physical Form:         RES3
  6034. COP (Code of Operation): 0FH 07H  Note: Code is same with Intel's LOADALL
  6035. Clocks:       Am386SXLV   : 366
  6036.        Am386DXLV   : 291
  6037.  
  6038. ----------O-RES4-----------------------------------
  6039. OPCODE RES4  - Restore All  CPU Registers
  6040.  
  6041. CPU:  AMD Am486SXLV, Am486DXLV
  6042. Type of Instruction: System Operation
  6043.             (Work only then CPL=0)
  6044.  
  6045. Instruction: RES3
  6046.  
  6047. Description:
  6048.           Load All Registers (Include Shadow Registers) from Table
  6049.           Which Begin on  place pointed ES:EDI
  6050.  
  6051. Note:
  6052.           This instruction is AMD analog Intel's LOADALL instruction
  6053.           but it's more i.c. return from SMM used this instruction.
  6054.  
  6055.           Then in SMM table is in SMRAM, then non SMM then table is
  6056.           in main memory.
  6057.  
  6058. Format of RES3 Table:
  6059.     (Table )
  6060.            Offset  Len  Description
  6061.         0H    4    CR0
  6062.         4H    4    EFLAGS
  6063.         8H    4    EIP
  6064.         CH    4    EDI
  6065.         10H    4    ESI
  6066.         14H    4    EBP
  6067.         18H    4    ESP
  6068.         1CH    4    EBX
  6069.         20H    4    EDX
  6070.         24H    4    ESX
  6071.         28H    4    EAX
  6072.         2CH    4    DR6
  6073.         30H    4    DR7
  6074.         34H    4    TR     (16 bit, zero filled up)
  6075.         38H    4    LDT  ---------
  6076.         3CH    4    GS   ---------
  6077.         40H    4    FS   ---------
  6078.         44H    4    DS   ---------
  6079.         48H    4    SS   ---------
  6080.         4CH    4    CS   ---------
  6081.         50H    4    ES   ---------
  6082.         54H    4    TSS.attrib
  6083.         58H    4    TSS.base
  6084.         5CH    4    TSS.limit
  6085.         60H    4    Reserved
  6086.         64H    4    IDT.base
  6087.         68H    4    IDT.limit
  6088.         6CH    4    REP OUTS overrun flag
  6089.         70H    4    GDT.base
  6090.         74H    4    GDT.limit
  6091.         78H    4    LDT.attrib
  6092.         7CH    4    LDT.base
  6093.         80H    4    LDT.limit
  6094.         84H    4    GS.attrib
  6095.         88H    4    GS.base
  6096.         8CH    4    GS.limit
  6097.         90H    4    FS.attrib
  6098.         94H    4    FS.base
  6099.         98H    4    FS.limit
  6100.         9CH    4    DS.attrib
  6101.         A0H    4    DS.base
  6102.         A4H    4    DS.limit
  6103.         A8H    4    SS.attrib
  6104.         ACH    4    SS.base
  6105.         B0H    4    SS.limit
  6106.         B4H    4    CS.attrib
  6107.         B8H    4    CS.base
  6108.         BCH    4    CS.limit
  6109.         C0H    4    ES.attrib
  6110.         C4H    4    ES.base
  6111.         C8H    4    ES.limit
  6112.                 Unknown Unusable area
  6113.         100H    4    Temporary register
  6114.         104H    4    -------------
  6115.         108H    4    -------------
  6116.         10CH    4    -------------
  6117.         110H    4    -------------
  6118.         114H    4    -------------
  6119.         118H    4    -------------
  6120.         11CH    4    -------------
  6121.         120H    4    -------------
  6122.         124H    4    Last EIP (Last instruction EIP for Restart)
  6123.         128H    4    PEIP - Previous SRAM space instruction pointer
  6124.         12EH    36    Unused
  6125.         150H    22    Floating Pointer Internal Registers (Am486DXLV)
  6126.  
  6127.     See Appendix X for more info.
  6128.  
  6129. Format    of Attrib field:
  6130.  
  6131.            Byte    Description
  6132.            0    0s
  6133.            1    AR (Access Right) byte in the Descriptor format
  6134.             Note:
  6135.                P bit is a valid bit
  6136.                if valid bit=0 then Shadow Register is invalid and
  6137.                   INT 0DH - General Protection Fault call
  6138.                DPL of SS,CS det. CPL
  6139.            2-3    0s
  6140.  
  6141. Flags Affected: All (FLAGS Register Reload)
  6142.  
  6143. CPU mode: RM,PM0,SMM
  6144.  
  6145. Physical Form:         RES4
  6146. COP (Code of Operation): 0FH 07H  Note: Code is same with Intel's LOADALL
  6147. Clocks:       Am486SXLV   : N/A
  6148.  
  6149. ----------O-RETRBI---------------------------------
  6150. OPCODE RETRBI     -  Return from Register Bank Context
  6151.          Switch  Interrupt.
  6152.  
  6153. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  6154. Type of Instruction: System
  6155.  
  6156. Instruction:  RETRBI
  6157.  
  6158. Description:
  6159.  
  6160.     PC  <- Save PC;
  6161.     PSW <- Save PSW;
  6162.  
  6163. Flags Affected:     All
  6164.  
  6165. CPU mode: RM
  6166.  
  6167. +++++++++++++++++++++++
  6168. Physical Form:    RETRBI
  6169. COP (Code of Operation)     : 0Fh 91h
  6170.  
  6171. Clocks:     12
  6172.  
  6173. ----------O-RETXA----------------------------------
  6174. OPCODE RETXA   -  Return from  Expansion Address
  6175.  
  6176. CPU:  NEC V33/V53 only
  6177. Type of Instruction: System
  6178.  
  6179. Instruction:  RETXA int_vector
  6180.  
  6181. Description:
  6182.          [sp-1,sp-2] <- PSW        ; PSW EQU FLAGS
  6183.          [sp-3,sp-4] <- PS        ; PS  EQU CS
  6184.          [sp-5,sp-6] <- PC        ; PC  EQU IP
  6185.          SP     <-  SP -6
  6186.          IE     <-  0
  6187.          BRK <-  0
  6188.          MD     <-  0
  6189.          PC     <- [int_vector*4 +0,+1]
  6190.          PS     <- [int_vector*4 +2,+3]
  6191.          Disable EA mode.
  6192.  
  6193. Flags Affected:     None
  6194.  
  6195. CPU mode: RM
  6196.  
  6197. +++++++++++++++++++++++
  6198. Physical Form:    RETXA  imm8
  6199. COP (Code of Operation)     : 0Fh F0h imm8
  6200.  
  6201. Clocks:     12
  6202.  
  6203. ----------O-ROL4-----------------------------------
  6204. OPCODE ROL4  -    Rotate    left  4 bits
  6205.  
  6206. CPU: NEC/Sony all  V-series
  6207. Type of Instruction: User
  6208.  
  6209. Instruction:  ROL4  dest
  6210.  
  6211. Description:
  6212.         AL            dest
  6213.  
  6214. bits        7     4 3    0     7    4 3   0
  6215.         -------------     -------------
  6216.         |      |  o    <--------|    <-|-o  |<--\
  6217.         ---------|----     -------------     |
  6218.              |                 |
  6219.              \---------------------------/
  6220.  
  6221. Note:    This instruction Rotates (4bits) left out of dest through low 4bits
  6222.     of AL
  6223.  
  6224. Flags Affected: None
  6225.  
  6226. CPU mode: RM
  6227.  
  6228. +++++++++++++++++++++++
  6229. Physical Form         : ROL4     reg/mem8
  6230. COP (Code of Operation)     : 0FH 28H  PostByte
  6231.  
  6232. Clocks:        ROL4 reg/mem8
  6233. NEC V20:        25/28
  6234.  
  6235. ----------O-ROR4-----------------------------------
  6236. OPCODE ROR4  -    Rotate    right  4 bits
  6237.  
  6238. CPU: NEC/Sony  all V-series
  6239. Type of Instruction: User
  6240.  
  6241. Instruction:  ROL4  dest
  6242.  
  6243. Description:
  6244.         AL            dest
  6245.  
  6246. bits        7     4 3    0     7    4 3   0
  6247.         -------------     -------------
  6248.         |      |   o--|------>|    o-|-> o-|--\
  6249.         ---------^----     -------------     |
  6250.              |                 |
  6251.              \---------------------------/
  6252.  
  6253. Note:    This instruction Rotates (4bits) right out of dest through low 4bits
  6254.     of AL
  6255.  
  6256. Flags Affected: None
  6257.  
  6258. CPU mode: RM
  6259.  
  6260. +++++++++++++++++++++++
  6261. Physical Form         : ROR4     reg/mem8
  6262. COP (Code of Operation)     : 0FH 2AH  PostByte
  6263.  
  6264. Clocks:        ROR4 reg/mem8
  6265. NEC V20:        29/33
  6266.  
  6267. ----------O-RSDC-----------------------------------
  6268. OPCODE RSDC  - Restore Register and Descriptor
  6269.  
  6270. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  6271.       IBM   BL486DX/DX2
  6272.       TI    486SLC/DLC/e
  6273.       TI    486SXL/SXL2/SXLC
  6274.       TI    Potomac
  6275. Type of Instruction: System
  6276.  
  6277. Instruction:  RSDC sreg,sorc
  6278.  
  6279. Description:
  6280.  
  6281.     sreg [selector,shadow_descriptor] <- sorc
  6282.  
  6283.     ; sorc is register and descriptor structure (see below)
  6284.  
  6285.     ; Note: This instruction load segment register
  6286.     ;    include shadow descriptor
  6287.  
  6288. Format or Register and Descriptor Structure:
  6289.     +00    Limit (15-0)    (Table )
  6290.     +02    Base  (15-0)
  6291.     +04    Base  (23-16)
  6292.     +05    AR byte
  6293.     +06    AR2/Limit (19-16)
  6294.     +07    Base  (31-24)
  6295.     +08    Selector
  6296.     Length of structure is 0Ah
  6297.  
  6298. Flags Affected: None
  6299.  
  6300. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  6301.  
  6302.        1) CPL=0
  6303.        2) CCR1.bit1=1  ; SMI enable
  6304.        3) SMAR size > 0
  6305.        4A) in SMM
  6306.        4B) CCR1.bit2=1 ; SMAC is on
  6307.  
  6308. ++++++++++++++++
  6309.  
  6310. Physical Form: RSDC sgeg,mem80
  6311. COP (Code of Operation)     : 0FH 79H  [mm sreg3 mmm]
  6312. Clocks    IBM BL486DX: 10
  6313.     TI  486SXL : 14
  6314.  
  6315. Note: sreg3 is: 000 ES
  6316.         001 CS
  6317.         010 SS
  6318.         011 DS
  6319.         100 FS
  6320.         101 GS
  6321.  
  6322. ----------O-RSLDT----------------------------------
  6323. OPCODE RSLDT  - Restore LDTR and Descriptor
  6324.  
  6325. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  6326.       IBM   BL486DX/DX2
  6327.       TI    486SLC/DLC/e
  6328.       TI    486SXL/SXL2/SXLC
  6329.       TI    Potomac
  6330. Type of Instruction: System
  6331.  
  6332. Instruction:  RSLDT sorc
  6333.  
  6334. Description:
  6335.  
  6336.     LDTR [selector,shadow_descriptor] <- sorc
  6337.  
  6338.     ; sorc is register and descriptor structure (see below)
  6339.  
  6340. Format or Register and Descriptor Structure:
  6341.     +00    Limit (15-0)    (Table )
  6342.     +02    Base  (15-0)
  6343.     +04    Base  (23-16)
  6344.     +05    AR byte
  6345.     +06    AR2/Limit (19-16)
  6346.     +07    Base  (31-24)
  6347.     +08    Selector
  6348.     Length of structure is 0Ah
  6349.  
  6350. Flags Affected: None
  6351.  
  6352. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  6353.  
  6354.        1) CPL=0
  6355.        2) CCR1.bit1=1  ; SMI enable
  6356.        3) SMAR size > 0
  6357.        4A) in SMM
  6358.        4B) CCR1.bit2=1 ; SMAC is on
  6359.  
  6360. ++++++++++++++++
  6361.  
  6362. Physical Form: RSLDT  mem80
  6363. COP (Code of Operation)     : 0FH 7BH  [mm 000 mmm]
  6364. Clocks    IBM BL486DX: 10
  6365.     TI  486SXL : 14
  6366.  
  6367. ----------O-RSM------------------------------------
  6368. OPCODE RSM  - Resume from System Managment Mode
  6369.  
  6370. CPU:  I486 SL Enhanced+,i486SL,i386CX,i386EX
  6371. Type of Instruction: System
  6372.  
  6373. Instruction: RSM
  6374.  
  6375. Description:
  6376.  
  6377.        Restore execution state from SMRAM and
  6378.        return to previous CPU mode
  6379.  
  6380. CPU mode: SMM only
  6381.      ( INT 6 - Undefined Opcode in all other mode )
  6382.  
  6383. Flags Affected: All
  6384.  
  6385. Note: CPU state restored from dump created entrance to SMM.
  6386.       The CPU leave SMM and return to previous mode.
  6387.       If CPU detect any invalid state it enters shutdown.
  6388.       This invalid states is:
  6389.        * The value stored in State Dump Base field is not 32K aligned
  6390.      address
  6391.        * Any Reserved bit of CR4 is set to 1 (Pentium only)
  6392.        * Any  illegal Combination of CR0:
  6393.        ** (PG=1 and PE=0)
  6394.        ** (NW=1 and CD=0)
  6395.  
  6396. Format of Execution State in SMRAM:
  6397.     Offset    Register    (Table )
  6398.     7FFCh    CR0
  6399.     7FF8h    CR3
  6400.     7FF4h    EFLAGS
  6401.     7FF0h    EIP
  6402.     7FECh    EDI
  6403.     7FE8h    ESI
  6404.     7FE4h    EBP
  6405.     7FE0h    ESP
  6406.     7FDCh    EBX
  6407.     7FD8h    EDX
  6408.     7FD4h    ECX
  6409.     7FD0h    EAX
  6410.     7FCCh    DR7
  6411.     7FC4h    TR, upper 2 bytes reserved
  6412.     7FC0h    LDTR, upper 2 bytes reserved
  6413.     7FBCh    GS, upper 2 bytes reserved
  6414.     7FB8h    FS, upper 2 bytes reserved
  6415.     7FB4h    DS, upper 2 bytes reserved
  6416.     7FB0h    SS, upper 2 bytes reserved
  6417.     7FACh    CS, upper 2 bytes reserved
  6418.     7FA8h    ES, upper 2 bytes reserved
  6419.     7F98h    Reserved
  6420.     7F94h    IDT base  (4 bytes)
  6421.     7F8Ch    Reserved
  6422.     7F88h    GDT base  (4 bytes)
  6423.     7F04h    Reserved
  6424.     7F02h    Auto HALT Restart Slot (2 bytes)
  6425.         Bits 15..2 are reserved
  6426.         Bit 1  Bit 0    Description
  6427.         0    0    Resume to next instruction in interrupted
  6428.                 program
  6429.         0    1    Unpredictable
  6430.         1    0    Return to next instruction after HALT
  6431.         1    1    Return to HALT state
  6432.     7F00h    I/O Restart Slot (2 bytes)
  6433.         When RSM execution if I/O restart slot = 0FFh then
  6434.         EIP modified to instruction immediate preceding the
  6435.         SMI# request i.e. CPU automatically reexecute I/O
  6436.         instruction which be trapped by SMI.
  6437.     7EFCh    SMM Revision Identificator (4 bytes)
  6438.         Bits    Description
  6439.         31..18    Reserved
  6440.         17    If=1 Processor support SMBASE relocation
  6441.             else not support
  6442.         16    If =1 Processor support I/O Instruction Restart
  6443.         15..0    SMM Revision Identificator
  6444.             P5,486s = 0000h
  6445.             P54C when I/O Restarts enable = 0002h
  6446.     7EF8h    SMBASE Slot (4 bytes)
  6447.         SMBASE is 32KB aligned 32bit dword which contained a base
  6448.         address for SMRAM.
  6449.         Default value is 30000h
  6450.         Starting Address for for jump in SMM is:
  6451.           SMBASE+8000h
  6452.         Starting address for State Save area is
  6453.           SMBASE+[8000h+7FFFh]
  6454.     7E00h    Reserved
  6455.  
  6456. Note: In fields marked Reserved saved and restores next registers:
  6457.       CR1,CR2,CR3, hidden descriptors for CS,DS,ES,FS,SS,GS.
  6458.       Never saved registers: DR5-DR0,TR7-TR3,all FPU registers.
  6459.       More Information Not available Yet.
  6460.  
  6461. Physical Form:          RSM
  6462. COP (Code of Operation)      : 0FH AAH
  6463. Clocks:      i386CX      : 338
  6464.     i486 SL Enhanced  : ???
  6465.      IntelDX4      : 452        ; SMBASE relocation
  6466.               : 456        ; AutoHALT restart
  6467.               : 465        ; I/O Trap restart
  6468.          Pentium  : 83
  6469.  
  6470. ----------O-RSM------------------------------------
  6471. OPCODE RSM  - Resume from SMM
  6472.  
  6473. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  6474.       IBM   BL486DX/DX2
  6475.       TI    486SLC/DLC/e
  6476.       TI    486SXL/SXL2/SXLC
  6477.       TI    Potomac
  6478. Type of Instruction: System
  6479.  
  6480. Instruction:  RSM
  6481.  
  6482. Description:
  6483.  
  6484.     RESTORE CPU STATE FROM SMM HEADER AT THE TOP OF
  6485.     SMM SPACE (defined by SMAR register);
  6486.     EXIT SMM;
  6487.  
  6488. Format of SMM Header:
  6489.     Offset    Length    Description    (Table )
  6490.     -00h    -    Nothing (Top of SMM space) (Not accessable)
  6491.     -04h    32    DR7
  6492.     -08h    32    EFLAGS
  6493.     -0Ch    32    CR0
  6494.     -10h    32    Current EIP
  6495.     -14h    32    Next instruction EIP
  6496.     -16h    16    Reserved
  6497.     -18h    16    CS selector
  6498.     -1Ch    32    CS descriptor(63-32)
  6499.     -20h    32    CS descriptor(31-0)
  6500.     -24h    32    SMM Flags
  6501.             [ ALL BITS are Not available in Cx486S/S2/D/D2]
  6502.             Bit   Description
  6503.             1    I (IN/INSx/OUT/OUTx Indicator)
  6504.                  If =0 current instruction performed
  6505.                    I/O read
  6506.                 =1 I/O write
  6507.             2    P (REP INSx/OUTx Prefix)
  6508.                  If =1 current instruction has REP pfix.
  6509.                 =0 not has REP pfix
  6510.             3    S (Software SMI)
  6511.                  If =1 current SMM is result of execution
  6512.                    SMINT instruction
  6513.                 =0 current SMM is result of hardware SMI
  6514.             Note: TI 486SXL/SXL2 support only bits 1,2.
  6515.     -26h    16    I/O Write Data size
  6516.             [ Not available in Cx486S/S2/D/D2]
  6517.             [ Not available in TI486SXL/SXL2]
  6518.             [ Not available in TI486SLC/DLC/e]
  6519.             1h = byte
  6520.             3h = word
  6521.             fh = dword
  6522.     -28h    16    I/O Write Address
  6523.             [ Not avaliable in Cx486S/S2/D/D2]
  6524.             [ Not available in TI486SXL/SXL2]
  6525.             [ Not available in TI486SLC/DLC/e]
  6526.     -2Ch    32    I/O Write Data
  6527.             [ Not avaliable in Cx486S/S2/D/D2]
  6528.             [ Not available in TI486SXL/SXL2]
  6529.             [ Not available in TI486SLC/DLC/e]
  6530.     -30h    32    ESI or EDI
  6531.             This field saved value of source/destination
  6532.             for restart INSx/OUTSx instruction
  6533.             [ Not avaliable in Cx486S/S2/D/D2]
  6534.  
  6535. Flags Affected: All
  6536.  
  6537. CPU mode: SMM
  6538.  
  6539. ++++++++++++++++
  6540.  
  6541. Physical Form: RSM
  6542. COP (Code of Operation)     : 0FH AAH
  6543. Clocks    IBM BL486DX: 76
  6544.     TI  486SXL : 58
  6545.  
  6546. ----------O-RSTS-----------------------------------
  6547. OPCODE RSTS  - Restore TR and Descriptor
  6548.  
  6549. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  6550.       TI    486SLC/DLC/e
  6551.       TI    486SXL/SXL2/SXLC
  6552.       IBM   BL486DX/DX2
  6553. Type of Instruction: System
  6554.  
  6555. Instruction:  RSTS sorc
  6556.  
  6557. Description:
  6558.  
  6559.     TR [selector,shadow_descriptor] <- sorc
  6560.  
  6561.     ; sorc is register and descriptor structure (see below)
  6562.  
  6563. Format or Register and Descriptor Structure:
  6564.     +00    Limit (15-0)    (Table )
  6565.     +02    Base  (15-0)
  6566.     +04    Base  (23-16)
  6567.     +05    AR byte
  6568.     +06    AR2/Limit (19-16)
  6569.     +07    Base  (31-24)
  6570.     +08    Selector
  6571.     Length of structure is 0Ah
  6572.  
  6573. Flags Affected: None
  6574.  
  6575. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  6576.  
  6577.        1) CPL=0
  6578.        2) CCR1.bit1=1  ; SMI enable
  6579.        3) SMAR size > 0
  6580.        4A) in SMM
  6581.        4B) CCR1.bit2=1 ; SMAC is on
  6582.  
  6583. ++++++++++++++++
  6584.  
  6585. Physical Form: RSTS  mem80
  6586. COP (Code of Operation)     : 0FH 7DH  [mm 000 mmm]
  6587. Clocks    IBM BL486DX: 10
  6588.     TI  486SXL : 14
  6589.  
  6590. ----------O-SET1-----------------------------------
  6591. OPCODE SET1  -    Set a Specified Bit
  6592.  
  6593. CPU: NEC/Sony V-series
  6594. Type of Instruction: User
  6595.  
  6596. Instruction:  SET1 dest,bitnumb
  6597.  
  6598. Description:
  6599.  
  6600.         BIT  bitnumb OF dest <- 1;
  6601.  
  6602. Flags Affected: None
  6603.  
  6604. CPU mode: RM
  6605.  
  6606. +++++++++++++++++++++++
  6607. Physical Form:           SET1 reg/mem8,CL
  6608. COP (Code of Operation)     : 0FH 14H  Postbyte
  6609.  
  6610. Physical Form:           SET1 reg/mem8,imm8
  6611. COP (Code of Operation)     : 0FH 1CH  Postbyte imm8
  6612.  
  6613. Physical Form:           SET1 reg/mem16,CL
  6614. COP (Code of Operation)     : 0FH 15H  Postbyte
  6615.  
  6616. Physical Form:           SET1 reg/mem16,imm8
  6617. COP (Code of Operation)     : 0FH 1DH  Postbyte  imm8
  6618.  
  6619. Clocks:                 SET1
  6620.          r/m8,CL    r/m8,i8        r/m16,CL   r/m16,i8
  6621. NEC V20:      4/13     5/14          4/13          5/14
  6622.  
  6623. ----------O-SETALC---------------------------------
  6624. OPCODE SETALC  - Set AL to Carry Flag
  6625.  
  6626. CPU:  Intel 8086 and all its clones and upward
  6627.     compatibility chips.
  6628. Type of Instruction: User
  6629.  
  6630. Instruction: SETALC
  6631.  
  6632. Description:
  6633.  
  6634.     IF (CF=0) THEN AL:=0 ELSE AL:=FFH;
  6635.  
  6636. Flags Affected: None
  6637.  
  6638. CPU mode: RM,PM,VM,SMM
  6639.  
  6640. Physical Form:         SETALC
  6641. COP (Code of Operation): D6H
  6642. Clocks:          80286    : n/a   [3]
  6643.           80386    : n/a   [3]
  6644.          Cx486SLC  : n/a   [2]
  6645.           i486     : n/a   [3]
  6646.           Pentium  : n/a   [3]
  6647. Note: n/a is Time that Intel etc not say.
  6648.       [3] is real time it executed.
  6649.  
  6650. ----------O-SMI------------------------------------
  6651. OPCODE SMI  - System Managment Interrupt
  6652.  
  6653. CPU:  AMD Am386SXLV,Am386DXLV
  6654.       AMD 486s
  6655. Type of Instruction: System
  6656.  
  6657. Instruction: SMI
  6658.  
  6659. Description:
  6660.  
  6661.     IF (SMIE=1) THEN
  6662.            {
  6663.            SAVE STATUS OF EXECUTION TO SMRAM;
  6664.            ENTER SMM;
  6665.            SMMS <- 1;
  6666.            }
  6667.        ELSE
  6668.           {
  6669.           INT 1;
  6670.           }
  6671.        END
  6672.  
  6673. Notes: SMIE is <Soft SMI Enable> (DR7.bit12)
  6674.            =1 Enable soft SMI
  6675.            =0 Disable soft SMI
  6676.        SMMS is <SMM status bit>     (DR6.bit12)
  6677.            =1 SMM was entered
  6678.            =0 SMM status cleared
  6679.  
  6680. Flags Affected: None
  6681.  
  6682. CPU mode: RM?,PM0
  6683.  
  6684. Physical Form:         SMI
  6685. COP (Code of Operation): F1H
  6686. Clocks:         Am386SXLV : 357
  6687.          Am386DXLV : 325
  6688.          Am486xxxx : Don't know, do you?
  6689.  
  6690. ----------O-SMINT----------------------------------
  6691. OPCODE SMINT - Software SMM Interrupt
  6692.  
  6693. CPU:  Cyrix Cx486DX/DX2/DX4
  6694.       IBM   BL486DX/DX2
  6695. Note: Never in Cx486S/S2/D/D2
  6696.       Never in any TI's chips.
  6697. Type of Instruction: System
  6698.  
  6699. Instruction:  SMINT
  6700.  
  6701. Description:
  6702.     SAVE CPU STATE TO SMM HEADER AT THE TOP OF
  6703.     SMM SPACE (defined by SMAR register);
  6704.     ENTER SMM MODE;
  6705.  
  6706. Format of SMM Header: Refer to Cyrix/IBM SMI Instruction
  6707.     (Table )
  6708. Flags Affected: None
  6709.  
  6710. CPU mode: CPL=0, CCR1.bit1=1, SMAR size >= 30h.
  6711.  
  6712. ++++++++++++++++
  6713.  
  6714. Physical Form: SMINT
  6715. COP (Code of Operation)     : 0FH 7EH
  6716. Clocks    IBM BL486DX: 24
  6717.  
  6718. ----------O-STOP-----------------------------------
  6719. OPCODE STOP    -  Stop CPU
  6720.  
  6721. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  6722. Type of Instruction: System
  6723.  
  6724. Instruction:  STOP
  6725.  
  6726. Description:
  6727.         PowerDown instruction, Stop Oscillator,
  6728.         Halt CPU.
  6729.  
  6730. Flags Affected:     None
  6731.  
  6732. CPU mode: RM
  6733.  
  6734. +++++++++++++++++++++++
  6735. Physical Form:    STOP
  6736. COP (Code of Operation)     : 0Fh BEh
  6737.  
  6738. Clocks:     N/A
  6739.  
  6740. ----------O-SUB4S----------------------------------
  6741. OPCODE SUB4S  -     Subtraction of packed BCD strings
  6742.  
  6743. CPU: NEC/Sony all V-series
  6744. Type of Instruction: User
  6745.  
  6746. Instruction:  SUB4S
  6747.  
  6748. Description:
  6749.  
  6750.       BCD STRING (ADDRESS=ES:DI,LENGTH=CL) <-
  6751.       BCD STRING (ADDRESS=DS:SI,LENGTH=CL) -
  6752.       BCD STRING (ADDRESS=ES:DI,LENGTH=CL);
  6753.  
  6754.       Length of BCD string in CL;
  6755.  
  6756. Note:    si,di,cl and other registers not changed
  6757.  
  6758. Flags Affected: OF,CF,ZF
  6759.     ;;  ZF set if result is zero.
  6760.     ;;  CF,OF set as result of operation with most
  6761.     ;;  signification BCDs.
  6762.  
  6763. CPU mode: RM
  6764.  
  6765. +++++++++++++++++++++++
  6766. Physical Form: SUB4S
  6767. COP (Code of Operation)     : 0FH 22H
  6768.  
  6769. Clocks:        SUB4S
  6770. NEC V20:    ~7+19*CL
  6771.  
  6772. ----------O-SVDC-----------------------------------
  6773. OPCODE SVDC  - Save Register and Descriptor
  6774.  
  6775. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  6776.       IBM   BL486DX/DX2
  6777.       TI    486SLC/DLC/e
  6778.       TI    486SXL/SXL2/SXLC
  6779.       TI    Potomac
  6780. Type of Instruction: System
  6781.  
  6782. Instruction:  SVDC dest,sreg
  6783.  
  6784. Description:
  6785.  
  6786.     dest <- sreg [selector,shadow_descriptor]
  6787.  
  6788.     ; dest is register and descriptor structure (see below)
  6789.  
  6790. Format or Register and Descriptor Structure:
  6791.     +00    Limit (15-0)    (Table )
  6792.     +02    Base  (15-0)
  6793.     +04    Base  (23-16)
  6794.     +05    AR byte
  6795.     +06    AR2/Limit (19-16)
  6796.     +07    Base  (31-24)
  6797.     +08    Selector
  6798.     Length of structure is 0Ah
  6799.  
  6800. Flags Affected: None
  6801.  
  6802. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  6803.  
  6804.        1) CPL=0
  6805.        2) CCR1.bit1=1  ; SMI enable
  6806.        3) SMAR size > 0
  6807.        4A) in SMM
  6808.        4B) CCR1.bit2=1 ; SMAC is on
  6809.  
  6810. ++++++++++++++++
  6811.  
  6812. Physical Form: SVDC mem80,sreg
  6813. COP (Code of Operation)     : 0FH 78H  [mm sreg3 mmm]
  6814. Clocks    IBM BL486DX: 18
  6815.     TI  486SXL : 22
  6816.  
  6817. Note: sreg3 is: 000 ES
  6818.         001 CS
  6819.         010 SS
  6820.         011 DS
  6821.         100 FS
  6822.         101 GS
  6823.  
  6824. ----------O-SVLDT----------------------------------
  6825. OPCODE SVLDT  - Save LDTR and Descriptor
  6826.  
  6827. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  6828.       IBM   BL486DX/DX2
  6829.       TI    486SLC/DLC/e
  6830.       TI    486SXL/SXL2/SXLC
  6831.       TI    Potomac
  6832. Type of Instruction: System
  6833.  
  6834. Instruction:  SVLDT dest
  6835.  
  6836. Description:
  6837.  
  6838.     dest <- LDTR [selector,shadow_descriptor]
  6839.  
  6840.     ; dest is register and descriptor structure (see below)
  6841.  
  6842. Format or Register and Descriptor Structure:
  6843.     +00    Limit (15-0)    (Table )
  6844.     +02    Base  (15-0)
  6845.     +04    Base  (23-16)
  6846.     +05    AR byte
  6847.     +06    AR2/Limit (19-16)
  6848.     +07    Base  (31-24)
  6849.     +08    Selector
  6850.     Length of structure is 0Ah
  6851.  
  6852. Flags Affected: None
  6853.  
  6854. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  6855.  
  6856.        1) CPL=0
  6857.        2) CCR1.bit1=1  ; SMI enable
  6858.        3) SMAR size > 0
  6859.        4A) in SMM
  6860.        4B) CCR1.bit2=1 ; SMAC is on
  6861.  
  6862. ++++++++++++++++
  6863.  
  6864. Physical Form: SVLDT mem80
  6865. COP (Code of Operation)     : 0FH 7AH  [mm 000 mmm]
  6866. Clocks    IBM BL486DX: 18
  6867.     TI  486SXL : 22
  6868.  
  6869. ----------O-SVTS-----------------------------------
  6870. OPCODE SVTS  - Save TR and Descriptor
  6871.  
  6872. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  6873.       IBM   BL486DX/DX2
  6874.       TI    486SLC/DLC/e
  6875.       TI    486SXL/SXL2/SXLC
  6876.       TI    Potomac
  6877. Type of Instruction: System
  6878.  
  6879. Instruction:  SVTS dest
  6880.  
  6881. Description:
  6882.  
  6883.     dest <- TR [selector,shadow_descriptor]
  6884.  
  6885.     ; dest is register and descriptor structure (see below)
  6886.  
  6887. Format or Register and Descriptor Structure:
  6888.     +00    Limit (15-0)    (Table )
  6889.     +02    Base  (15-0)
  6890.     +04    Base  (23-16)
  6891.     +05    AR byte
  6892.     +06    AR2/Limit (19-16)
  6893.     +07    Base  (31-24)
  6894.     +08    Selector
  6895.     Length of structure is 0Ah
  6896.  
  6897. Flags Affected: None
  6898.  
  6899. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  6900.  
  6901.        1) CPL=0
  6902.        2) CCR1.bit1=1  ; SMI enable
  6903.        3) SMAR size > 0
  6904.        4A) in SMM
  6905.        4B) CCR1.bit2=1 ; SMAC is on
  6906.  
  6907. ++++++++++++++++
  6908.  
  6909. Physical Form: SVTS mem80
  6910. COP (Code of Operation)     : 0FH 7CH  [mm 000 mmm]
  6911. Clocks    IBM BL486DX: 18
  6912.     TI  486SXL : 22
  6913.  
  6914. ----------O-SYSCALL--------------------------------
  6915. OPCODE SYSCALL    - Call Operating System
  6916.  
  6917. CPU:  AMD Am6k86 (K6)
  6918. Type of Instruction: User
  6919.  
  6920. Instruction: SYSCALL
  6921.  
  6922. Description:
  6923.  
  6924.     if EFER.SCE = 1 then
  6925.     {    ECX <- EIP
  6926.         EIP <- STAR[31..0]
  6927.         IF  <- 0
  6928.         VM  <- 0
  6929.         CS.selector  <- STAR[47..32]
  6930.         SS.selector  <- (STAR[47..32]) + 8
  6931.         CS.base         <- 0
  6932.         SS.base         <- 0
  6933.         CS.limit     <- 4G
  6934.         SS.limit     <- 4G
  6935.         CS.attr         <- ReadOnly
  6936.         SS.attr         <- R/W, Expand-Up
  6937.         CPL <- 0
  6938.     } else    #UD;
  6939.  
  6940. Note:  Passing control to fixed entry point for faster OS calls.
  6941.        see RDMSR for description of STAR (SYSCALL Target Address register)
  6942.  
  6943. Note:  Command opcode equal to 286 LOADALL undocument instruction.
  6944.  
  6945. ++++++++++++++++++++++++++++++++++++++
  6946. COP & Times:
  6947.  
  6948.    SYSCALL    0FH 05H
  6949.     Am6k86:     n/a
  6950.  
  6951. ----------O-SYSENTER-------------------------------
  6952. OPCODE SYSENTER     - Call Operating System
  6953.  
  6954. CPU:  Intel Pentium II
  6955. Type of Instruction: System
  6956.  
  6957. Instruction: SYSENTER
  6958.  
  6959. Description:
  6960.  
  6961.     if CR.0.PE       == 0 then #GP(0);
  6962.     if SYSENTER_CS_MSR == 0 then #GP(0);
  6963.  
  6964.     EFLAGS.VM <- 0;
  6965.     EFLAGS.IF <- 0;
  6966.  
  6967.     CS.SEL        <- SYSENTER_CS_MSR;
  6968.     CPL        <- 0;
  6969.     CS.BASE        <- 0;
  6970.     CS.LIMIT    <- 0xffff;
  6971.     CS.ATTR.G    <- 1;
  6972.     CS.ATTR.S    <- 1;
  6973.     CS.ATTR.TYPE    <- 1011b;
  6974.     CS.ATTR.D    <- 1;
  6975.     CS.ATTR.DPL    <- 0;
  6976.     CS.RPL        <- 0;
  6977.     CS.ATTR.P    <- 1;
  6978.  
  6979.     SS.SEL        <- CS.SEL+8;
  6980.     SS.BASE        <- 0;
  6981.     SS.LIMIT    <- 0xffff;
  6982.     SS.ATTR.G    <- 1;
  6983.     SS.ATTR.S    <- 1;
  6984.     SS.ATTR.TYPE    <- 0011b;
  6985.     SS.ATTR.D    <- 1;
  6986.     SS.ATTR.DPL    <- 0;
  6987.     SS.RPL        <- 0;
  6988.     SS.ATTR.P    <- 1;
  6989.  
  6990.     ESP        <- SYSENTER_ESP_MSR;
  6991.     EIP        <- SYSENTER_EIP_MSR;
  6992.  
  6993. Note:    How to check if this instruction present:
  6994.       CPUID.SEP bit must be set.
  6995.     AND
  6996.       CPUID.FAMILY == 6 AND (CPUID.MODEL >=3) AND (CPUID.STEP >= 3)
  6997.  
  6998. Note:    See MSR List for more Info.
  6999.  
  7000. Note:  Passing control to fixed entry point for faster OS calls.
  7001.  
  7002. ++++++++++++++++++++++++++++++++++++++
  7003. COP & Times:
  7004.  
  7005.    SYSENTER    0FH 34H
  7006.     P6:         n/a
  7007.  
  7008. ----------O-SYSEXIT--------------------------------
  7009. OPCODE SYSEXIT    - Return from Operation System
  7010.  
  7011. CPU: Intel Pentium II
  7012. Type of Instruction: Privelege (CPL =0)
  7013.  
  7014. Instruction: SYSRET
  7015.  
  7016. Description:
  7017.  
  7018.     if CR.0.PE       == 0 then #GP(0);
  7019.     if SYSENTER_CS_MSR == 0 then #GP(0);
  7020.  
  7021.     EFLAGS.VM <- 0;
  7022.     EFLAGS.IF <- 0;
  7023.  
  7024.     CS.SEL        <- SYSENTER_CS_MSR + 16;
  7025.     CPL        <- 0;
  7026.     CS.BASE        <- 0;
  7027.     CS.LIMIT    <- 0xffff;
  7028.     CS.ATTR.G    <- 1;
  7029.     CS.ATTR.S    <- 1;
  7030.     CS.ATTR.TYPE    <- 1011b;
  7031.     CS.ATTR.D    <- 1;
  7032.     CS.ATTR.DPL    <- 0;
  7033.     CS.RPL        <- 0;
  7034.     CS.ATTR.P    <- 1;
  7035.  
  7036.     SS.SEL        <- CS.SEL+8;
  7037.     SS.BASE        <- 0;
  7038.     SS.LIMIT    <- 0xffff;
  7039.     SS.ATTR.G    <- 1;
  7040.     SS.ATTR.S    <- 1;
  7041.     SS.ATTR.TYPE    <- 0011b;
  7042.     SS.ATTR.D    <- 1;
  7043.     SS.ATTR.DPL    <- 0;
  7044.     SS.RPL        <- 0;
  7045.     SS.ATTR.P    <- 1;
  7046.  
  7047.     ESP        <- SYSENTER_ESP_MSR;
  7048.     EIP        <- SYSENTER_EIP_MSR;
  7049.  
  7050. Note: See SYSENTER for more Info.
  7051.  
  7052. ++++++++++++++++++++++++++++++++++++++
  7053. COP & Times:
  7054.  
  7055.    SYSEXIT    0FH 35H
  7056.     P6:         n/a
  7057.  
  7058. ----------O-SYSRET---------------------------------
  7059. OPCODE SYSRET  - Return from Operation System
  7060.  
  7061. CPU:  AMD Am6k86 (K6)
  7062. Type of Instruction: Privelege (CPL =0)
  7063.  
  7064. Instruction: SYSRET
  7065.  
  7066. Description:
  7067.  
  7068.     if EFER.SCE == 1
  7069.     {
  7070.         if CPL == 0
  7071.         {
  7072.             EIP <-    ECX
  7073.             IF  <-    1
  7074.             CS.selector   <- STAR[47..32] OR 3H
  7075.             CS.base          <- 0
  7076.             CS.limit      <- 4GB
  7077.             CS.attr          <- ReadOnly
  7078.             SS  <- (STAR[47..32]) + 16) OR 3H
  7079.         } else #GP(0);
  7080.     } else #UD;
  7081.  
  7082. Note:  Passing control from  OS     entry point back to ring 3 client.
  7083.        see RDMSR for description of STAR (SYSCALL Target Address register)
  7084.  
  7085. Note:  Command opcode equal to 386/486 LOADALL undocument instruction.
  7086.  
  7087. ++++++++++++++++++++++++++++++++++++++
  7088. COP & Times:
  7089.  
  7090.    SYSRET    0FH 07H
  7091.     Am6k86:     n/a
  7092.  
  7093. ----------O-TEST1----------------------------------
  7094. OPCODE TEST1  -     Test a Specified bit
  7095.  
  7096. CPU: NEC/Sony all V-series
  7097. Type of Instruction: User
  7098.  
  7099. Instruction:  NOT1 dest,bitnumb
  7100.  
  7101. Description:
  7102.         IF dest IS  8BIT THEN  bitn <- bitnumb AND 7;
  7103.         IF dest IS 16BIT THEN  bitn <- bitnumb AND Fh;
  7104.  
  7105.         IF (BIT bitn OF dest) = 0 THEN
  7106.             {
  7107.             ZF <- 1;
  7108.             }
  7109.         ELSE    {
  7110.             ZF <- 0;
  7111.             }
  7112.         ENDIF
  7113.  
  7114. Flags Affected: ZF
  7115.  
  7116. CPU mode: RM
  7117.  
  7118. +++++++++++++++++++++++
  7119. Physical Form:           TEST1 reg/mem8,CL
  7120. COP (Code of Operation)     : 0FH 10H  Postbyte
  7121.  
  7122. Physical Form:           TEST1 reg/mem8,imm8
  7123. COP (Code of Operation)     : 0FH 18H  Postbyte imm8
  7124.  
  7125. Physical Form:           TEST1 reg/mem16,CL
  7126. COP (Code of Operation)     : 0FH 11H  Postbyte
  7127.  
  7128. Physical Form:           TEST1 reg/mem16,imm8
  7129. COP (Code of Operation)     : 0FH 19H  Postbyte  imm8
  7130.  
  7131. Clocks:                 TEST1
  7132.          r/m8,CL    r/m8,i8        r/m16,CL   r/m16,i8
  7133. NEC V20:      3/12     4/13         3/12        4/13
  7134.  
  7135. ----------O-TSKSW----------------------------------
  7136. OPCODE TSKSW  -      Task Switch
  7137.  
  7138. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  7139. Type of Instruction: System
  7140.  
  7141. Instruction:  TSKSW   reg16
  7142.  
  7143. Description:  Perform a High-Speed task switch to the register bank indicated
  7144.           by lower 3 bits of reg16. The PC and PSW are saved in the old
  7145.           banks. PC and PSW save Registers and the new PC and PSW values
  7146.           are retrived from the new register bank's save area.
  7147.  
  7148. Note:         See BRKCS instruction for more Info about banks.
  7149.  
  7150. Flags Affected:     All
  7151.  
  7152. CPU mode: RM
  7153.  
  7154. +++++++++++++++++++++++
  7155. Physical Form:    TSCSW reg16
  7156. COP (Code of Operation)     : 0Fh 94h <1111 1RRR>
  7157.  
  7158. Clocks:     11
  7159.  
  7160. ----------O-UD------------------------------------
  7161. OPCODE UD  -  Undefined Instruction
  7162.  
  7163. CPU:    AMD Am5k86 (SSA/5, K5)
  7164.  
  7165. Logical Form:    UD
  7166.  
  7167. Description:
  7168.         Caused #UD exception
  7169.  
  7170. Flags Affected: No Flags Affected
  7171. CPU Mode : RM,PM,VM,VME,SMM
  7172.  
  7173. Exceptions :
  7174.     RM    PM    V86    VME    SMM
  7175.     #UD    #UD    #UD    #UD    #UD Undefined Instruction
  7176.     No more Exceptions
  7177.  
  7178. Note :
  7179.     This instruction caused #UD. AMD  guaranteed that in future AMD's
  7180.     CPUs this instruction will caused #UD. Of course all previous CPUs
  7181.     (186+) caused #UD on this opcode. This instruction used by software
  7182.     writers for testing #UD exception servise routine.
  7183.  
  7184. ++++++++++++++++++++++++++++++
  7185.  
  7186. Physical Form : UD
  7187.  
  7188. COP (Code of Operation) : 0Fh FFh
  7189.  
  7190. Clocks :    UD
  7191. 8088:    Not supported
  7192. NEC V20:    Not supported
  7193. 80186:    ~int
  7194. 80286:    ~int
  7195. 80386:    ~int
  7196. Cx486SLC:    ~int
  7197. i486:    ~int
  7198. Cx486DX:    ~int
  7199. Cx5x86:        ~int
  7200. Pentium:    ~int
  7201. Nx5x86:        ~int
  7202. Cx6x86:        ~int
  7203. Am5k86:        ~int
  7204. Pentium Pro:    ~int
  7205.  
  7206. ++++++++++++++++++++++++++++++
  7207.  
  7208. ----------O-UD2-----------------------------------
  7209. OPCODE UD2  -  Undefined Instruction
  7210.  
  7211. CPU:    Pentium Pro+ and all other
  7212.  
  7213. Logical Form:    UD2
  7214.  
  7215. Description:
  7216.         Caused #UD exception
  7217.  
  7218. Flags Affected: No Flags Affected
  7219. CPU Mode : RM,PM,VM,VME,SMM
  7220.  
  7221. Exceptions :
  7222.     RM    PM    V86    VME    SMM
  7223.     #UD    #UD    #UD    #UD    #UD Undefined Instruction
  7224.     No more Exceptions
  7225.  
  7226. Note :
  7227.     This instruction caused #UD. Intel guaranteed that in future Intel's
  7228.     CPUs this instruction will caused #UD. Of course all previous CPUs
  7229.     (186+) caused #UD on this opcode. This instruction used by software
  7230.     writers for testing #UD exception servise routine.
  7231.  
  7232. ++++++++++++++++++++++++++++++
  7233.  
  7234. Physical Form : UD2
  7235.  
  7236. COP (Code of Operation) : 0Fh 0Bh
  7237.  
  7238. Clocks :    UD2
  7239. 8088:    Not supported
  7240. NEC V20:    Not supported
  7241. 80186:    ~int
  7242. 80286:    ~int
  7243. 80386:    ~int
  7244. Cx486SLC:    ~int
  7245. i486:    ~int
  7246. Cx486DX:    ~int
  7247. Cx5x86:        ~int
  7248. Pentium:    ~int
  7249. Nx5x86:        ~int
  7250. Cx6x86:        ~int
  7251. Am5k86:        ~int
  7252. Pentium Pro:    ~int
  7253.  
  7254. ++++++++++++++++++++++++++++++
  7255.  
  7256. ----------O-UMOV-----------------------------------
  7257. OPCODE UMOV  - Mov Data to Main (User) Memory
  7258.  
  7259. CPU:  AMD Am386SXLV,Am386DXLV
  7260.       AMD 486s
  7261.       IBM 486SLC2
  7262. Type of Instruction: Special System
  7263.  
  7264. Instruction: UMOV dest,sorc
  7265.  
  7266. Description:
  7267.  
  7268.       dest <- sorc;
  7269.  
  7270. Note!!!!!: But all memory operands placed in Main memory only !
  7271.       ( i.e. not in SMRAM then in SMM )
  7272.  
  7273. WARNING: UMC's CPUs hang on execution this instruction !!!!!!
  7274.      check that CPU is none UMC's before
  7275.  
  7276. Note:     On Cyrix's CPUs UMOV opcodes do nothing. This way used to
  7277.      determination of Cyrix Microprocessors.
  7278.  
  7279. Note:     Pentium P54C never support this instruction
  7280.  
  7281. Flags Affected:     None
  7282.  
  7283. CPU mode: RM?,PM?,VM?,SMM
  7284.  
  7285. +++++++++++++++++++++++
  7286. Physical Form:           UMOV     r/m8,r8
  7287. COP (Code of Operation)     : 0FH 10H Postbyte
  7288.  
  7289. Clocks:
  7290.       Am386SXLV or AM386DXLV:  2/2
  7291.       IBM 486SLC2        :  4
  7292. +++++++++++++++++++++
  7293. Physical Form:           UMOV     r/m16,r16
  7294.                UMOV     r/m32,r32
  7295. COP (Code of Operation)     : 0FH 11H Postbyte
  7296.  
  7297. Clocks:
  7298.       Am386SXLV or AM386DXLV:  2/2
  7299.       IBM 486SLC2        :  4
  7300. +++++++++++++++++++++++
  7301. Physical Form:           UMOV     r8,r/m8
  7302. COP (Code of Operation)     : 0FH 12H Postbyte
  7303.  
  7304. Clocks:
  7305.       Am386SXLV or AM386DXLV:  2/4
  7306.       IBM 486SLC2        :  4
  7307. +++++++++++++++++++++
  7308. Physical Form:           UMOV     r16,r/m16
  7309.                UMOV     r32,r/m32
  7310. COP (Code of Operation)     : 0FH 13H Postbyte
  7311.  
  7312. Clocks:
  7313.       Am386SXLV or AM386DXLV:  2/4
  7314.       IBM 486SLC2        :  4
  7315.  
  7316. ----------O-WBINVD---------------------------------
  7317. OPCODE WBINVD  - Write Back and Invalidate Cache
  7318.  
  7319. CPU:  I486 +
  7320. Type of Instruction: System
  7321.  
  7322. Instruction: WBINVD
  7323.  
  7324. Description:
  7325.          IF (internal cache is WB and in WB mode) THEN
  7326.               {
  7327.               Write Back Internal Cache;
  7328.               }
  7329.          Flush internal cache;
  7330.          Signal external cache to Write Back;
  7331.          Signal external cache to Flush;
  7332.  
  7333. Notes: This instruction not work in Real Mode and  in
  7334. Protected mode work only in ring 0 ;
  7335.  
  7336. Flags Affected: None
  7337.  
  7338. CPU mode: PM0,SMM
  7339.  
  7340. Physical Form:         INVD
  7341. COP (Code of Operation): 0FH 09H
  7342. Clocks: Cyrix Cx486SLC : 4
  7343.           i486     : 5
  7344.           Pentium  : 2000+
  7345.  
  7346. ----------O-WRMSR----------------------------------
  7347. OPCODE WRMSR  - Write to Model Specified Register
  7348.  
  7349. CPU:  Pentium (tm), IBM 486SLC2
  7350. Type of Instruction: System
  7351.  
  7352. Instruction: WRMSR
  7353.  
  7354. Description:
  7355.  
  7356.     IF (ECX is valid number of MSR) and (CPL=0)  THEN
  7357.           {
  7358.           MSR [ECX] <- EDX:EAX;
  7359.           }
  7360.         ELSE
  7361.           {
  7362.           General Protection Fault  INT 0DH (0)
  7363.           }
  7364.     END
  7365.  
  7366. Flags Affected: None
  7367.  
  7368. Note: Refer to RDMSR for more Info.
  7369.  
  7370. CPU mode: RM,PM0,SMM
  7371.  
  7372. Physical Form:         WRMSR
  7373. COP (Code of Operation): 0FH 30H
  7374. Clocks:         Pentium   : 30-45
  7375.  
  7376. ----------O-WRSHR----------------------------------
  7377. OPCODE WRSHR  - Write SMM Header Pointer Register
  7378.  
  7379. CPU:  Cyrix Cx6x86MX
  7380. Type of Instruction: SMM mode only
  7381.  
  7382. Instruction:  WRSHR src
  7383.  
  7384. Description:
  7385.  
  7386.     SMHR <- src
  7387.  
  7388. Note: See RDSHR for more details
  7389.  
  7390. Flags Affected: None
  7391.  
  7392. CPU mode: SMM
  7393.  
  7394. ++++++++++++++++
  7395.  
  7396. Physical Form: RDSHR    reg/mem32
  7397. COP (Code of Operation)     : 0FH 37H Postbyte
  7398. Clocks      Cx6x86MX: n/a
  7399.  
  7400. ----------O-X86FMF---------------------------------
  7401. OPCODE X86FMF  - Move from  IA-32  F.P. register.
  7402.  
  7403. CPU:  Merced
  7404. Type of Instruction: User
  7405.  
  7406. Instruction: X86FMF   src,dest
  7407.  
  7408. Description:
  7409.  
  7410.     Dest [IA-64 register] <-  Src [IA-32 F.P. register]
  7411.  
  7412. Flags Affected: None
  7413.  
  7414. CPU mode: IA-64
  7415.  
  7416. Physical Form:        X86MF    fp_reg,reg64
  7417.  
  7418. COP (Code of Operation): ???
  7419. Clocks:        Merced : ??
  7420.  
  7421. ----------O-X86FMT---------------------------------
  7422. OPCODE X86FMT  - Move to IA-32 F.P. register.
  7423.  
  7424. CPU:  Merced
  7425. Type of Instruction: User
  7426.  
  7427. Instruction: X86FMT   src,dest
  7428.  
  7429. Description:
  7430.  
  7431.     Dest [IA-32 F.P. register] <-  Src [IA-64 register]
  7432.  
  7433. Flags Affected: None
  7434.  
  7435. CPU mode: IA-64
  7436.  
  7437. Physical Form:        X86FMT    reg64,fp_reg
  7438.  
  7439. COP (Code of Operation): ???
  7440. Clocks:        Merced : ??
  7441.  
  7442. ----------O-X86JMP---------------------------------
  7443. OPCODE X86JMP  - Jump and change to 32-bit ISA.
  7444.  
  7445. CPU:  Merced
  7446. Type of Instruction: User
  7447.  
  7448. Instruction: X86JMP    dest
  7449.  
  7450. Description:
  7451.  
  7452.     This instruction make jump to specified address, and
  7453.     change execution mode from IA-64 to IA-32.
  7454.  
  7455. Note:    Another way to change to IA-32 mode it's return from interrupt,
  7456.     new IA-64 instruction EVRET used for it.
  7457.  
  7458. Note:    [Rel17 Form]
  7459.         new XIP = XIP + rel17 * 4 - CS_base;
  7460.         Target XIP truncated to 32-bit.
  7461.     [Reg64 Form]
  7462.         reg32[47:32] contain 16-bit selector
  7463.         reg32[31:0]  contain 32-bit offset
  7464.         (If EFLAGS.VM = 1 then CS_base calculated as in VM,
  7465.                   = 0, then access LDT/GDT for get CS_base)
  7466.  
  7467. Flags Affected: None
  7468.  
  7469. CPU mode: IA-64
  7470.  
  7471. Physical Form:        X86JMP    rel17
  7472.             X86JMP    reg64
  7473.  
  7474. COP (Code of Operation): ???
  7475. Clocks:        Merced : ??
  7476.  
  7477. ----------O-X86MF----------------------------------
  7478. OPCODE X86MF  - Move from  IA-32  GPR register.
  7479.  
  7480. CPU:  Merced
  7481. Type of Instruction: User
  7482.  
  7483. Instruction: X86MF   src,dest
  7484.  
  7485. Description:
  7486.  
  7487.     Dest [IA-64 register] <-  Src [IA-32 register]
  7488.  
  7489.     IA-32 registers are GPR.
  7490.  
  7491. Flags Affected: None
  7492.  
  7493. CPU mode: IA-64
  7494.  
  7495. Physical Form:        X86MF    IA32_reg32,reg64
  7496.  
  7497. COP (Code of Operation): ???
  7498. Clocks:        Merced : ??
  7499.  
  7500. ----------O-X86MT----------------------------------
  7501. OPCODE X86MT  - Move to IA-32 GPR register.
  7502.  
  7503. CPU:  Merced
  7504. Type of Instruction: User
  7505.  
  7506. Instruction: X86MT   src,dest
  7507.  
  7508. Description:
  7509.  
  7510.     Dest [IA-32 register] <-  Src [IA-64 register]
  7511.  
  7512.     IA-32 registers are GPR.
  7513.  
  7514. Flags Affected: None
  7515.  
  7516. CPU mode: IA-64
  7517.  
  7518. Physical Form:        X86MT    reg64,IA32_reg32
  7519.  
  7520. COP (Code of Operation): ???
  7521. Clocks:        Merced : ??
  7522.  
  7523. ----------O-X86SMF---------------------------------
  7524. OPCODE X86SMF  - Move from  IA-32  Segment register.
  7525.  
  7526. CPU:  Merced
  7527. Type of Instruction: User
  7528.  
  7529. Instruction: X86SMF   src,dest
  7530.  
  7531. Description:
  7532.  
  7533.     Dest [IA-64 register] <-  Src [IA-32 segment register]
  7534.  
  7535. Flags Affected: None
  7536.  
  7537. CPU mode: IA-64
  7538.  
  7539. Physical Form:        X86SMF    sreg16,reg64
  7540.  
  7541. COP (Code of Operation): ???
  7542. Clocks:        Merced : ??
  7543.  
  7544. ----------O-X86SMT---------------------------------
  7545. OPCODE X86SMT  - Move to IA-32 Segment register.
  7546.  
  7547. CPU:  Merced
  7548. Type of Instruction: User
  7549.  
  7550. Instruction: X86SMT   src,dest
  7551.  
  7552. Description:
  7553.  
  7554.     Dest [IA-32 segment register] <-  Src [IA-64 register]
  7555.  
  7556. Flags Affected: None
  7557.  
  7558. CPU mode: IA-64
  7559.  
  7560. Physical Form:        X86SMT    reg64,sreg16
  7561.  
  7562. COP (Code of Operation): ???
  7563. Clocks:        Merced : ??
  7564.  
  7565. ----------O-XADD-----------------------------------
  7566. OPCODE XADD  - Exchange and addition
  7567.  
  7568. CPU:  i486+
  7569. Type of Instruction: User
  7570.  
  7571. Instruction: XADD dest,sorc
  7572.  
  7573. Description:
  7574.  
  7575.       Temporary <- dest;
  7576.       dest        <- dest + sorc;
  7577.       sorc        <- Temporary;
  7578.  
  7579. Flags Affected:     ZF,OF,SF,AF,PF,CF ( like ADD instruction ) ( see description)
  7580.  
  7581. CPU mode: RM,PM,VM,SMM
  7582.  
  7583. +++++++++++++++++++++++
  7584. Physical Form:           XADD     r/m8,r8
  7585. COP (Code of Operation)     : 0FH C0H Postbyte
  7586.  
  7587. Clocks:
  7588.        Intel i486     :  3/4
  7589.      Cyrix Cx486SLC     :  3/6
  7590.      Pentium (tm)     :  3/4
  7591.  
  7592. Penalty if cache miss     :
  7593.       Intel i486     : 6/2    ; Unlocked/Locked
  7594.      Cyrix Cx486SLC     : 0    ; N/A
  7595. +++++++++++++++++++++
  7596. Physical Form:           XADD     r/m16,r16
  7597.                XADD     r/m32,r32
  7598. COP (Code of Operation)     : 0FH C1H Postbyte
  7599.  
  7600. Clocks:
  7601.        Intel i486     :  3/4
  7602.      Cyrix Cx486SLC     :  3/6
  7603.      Pentium (tm)     :  3/4
  7604.  
  7605. Penalty if cache miss     :
  7606.       Intel i486     : 6/2    ; Unlocked/Locked
  7607.      Cyrix Cx486SLC     : 1    ; N/A
  7608.  
  7609. ----------O-XBTS-----------------------------------
  7610. OPCODE XBTS    -  Extract  Bits String
  7611.  
  7612. CPU:  80386 step A0-B0 only
  7613. Type of Instruction: User
  7614.  
  7615. Instruction:  XBTS dest,base,bitoffset,len
  7616.  
  7617. Description:
  7618.          Write bit string length <len> bits from bitfield, defined by
  7619.         <base> and bitsoffset <bitoffset> from this base to start of
  7620.         the field to read. String read from this start field bit to
  7621.         higher memory addresses or register bits.
  7622.         And after it string placed to <dest> operand, lowest bit of
  7623.         register or memory to bit 0 of <dest>.
  7624.  
  7625. Note:         Use SHLD/SHRD instructions for extract bits strings.
  7626.          On 80386 steps B1+ this opcode generation INT 6,
  7627.          and on some of 486 other instruction replace this
  7628.          instruction opcode.
  7629.  
  7630. Flags Affected: None
  7631.  
  7632. CPU mode: RM,PM,VM
  7633.  
  7634. +++++++++++++++++++++++
  7635. Physical Form:      XBTS    r16,r/m16,AX,CL
  7636.           XBTS    r32,r/m32,EAX,CL
  7637. COP (Code of Operation)     : 0FH A6H Postbyte
  7638.  
  7639. Clocks:        XBTS
  7640. 80386:        6/13
  7641.  
  7642. -----------------------------------------------------
  7643. APPENDIX    A0
  7644. Cyrix Cx486SLC/DLC configuration Registers
  7645.  
  7646. for Cx486DLC:
  7647. Register    Full Register Name        Index    size(bits)
  7648. CCR0    Configuration Control Register #0    C0H    8
  7649. CCR1    Configuration Control Register #1    C1H    8
  7650. NCR1    Non-cacheble Region #0            C4H-C6H    24
  7651. NCR2    Non-cachable Region #1            C7H-C9H    24
  7652. NCR3    Non-cacheble Region #2            CAH-CCH 24
  7653. NCR4    Non-cacheble Region #4            CDH-CFH    24
  7654.  
  7655. for Cx486SLC:
  7656. Register    Full Register Name        Index    size(bits)
  7657. CCR0    Configuration Control Register #0    C0H    8
  7658. CCR1    Configuration Control Register #1    C1H    8
  7659. NCR1    Non-cacheble Region #0            C5H-C6H    16
  7660. NCR2    Non-cachable Region #1            C8H-C9H    16
  7661. NCR3    Non-cacheble Region #2            CBH-CCH 16
  7662. NCR4    Non-cacheble Region #4            CEH-CFH    16
  7663.  
  7664. For access to this register You need to do:
  7665.  
  7666. A) write INDEX_OF_REGISTER to I/O port #22H
  7667. B) wait 5-6 clocks
  7668. D) read/write DATA from/to register via I/O port #23
  7669.  
  7670. Note: If Index of register not in range C0H..CFH then Cyrix CPU
  7671.       generated external bus cycle. If You try to read I/O port
  7672.       #22H CPU will generated external bus cycle too. Then index
  7673.       is out of range all operations with port #23H will generate
  7674.       external bus cycle.
  7675.  
  7676. State After Reset:
  7677.     CCR0    00H
  7678.     CCR1    xxxx xxx0B
  7679.     NCR1    000Fh
  7680.     NCR2    0
  7681.     NCR3    0
  7682.     NCR4    0
  7683.  
  7684. format of registers:
  7685.  
  7686. CCR0:
  7687. Bit    Name    Description
  7688. 7    SUSPEND
  7689.     If =1 then enable SUSP# and SUSPA# pins, which used for
  7690.     put CPU in PowerSave mode.
  7691.     If =0 disable
  7692.  
  7693. 6    CO    (Cache Organisation)
  7694.     If =0 2ways set associative
  7695.     If =1 Dirrect Mapped
  7696.  
  7697. 5    BARB
  7698.     If =1 then enable flushing internal cache when begining
  7699.     HOLD state.
  7700.     IF =0 disable.
  7701.  
  7702. 4    FLUSH
  7703.     If =1 enable input pin FLUSH#
  7704.     if =0 disable
  7705.  
  7706. 3    KEN
  7707.     If =1 enable input pin KEN#
  7708.     if =0 disable
  7709.  
  7710. 2    A20M
  7711.     If =1 enable input pin A20M#
  7712.     if =0 disable
  7713.  
  7714. 1    NC1
  7715.     If=1 then 640KB-1MB area never caching
  7716.     If=0 caching (but see NCRi)
  7717.  
  7718. 0    NC0
  7719.     If=1 then first 64K of each 1MB bounds not caching,
  7720.     when in Real or Virtual8086 mode
  7721.     If =0 caching
  7722.  
  7723. CCR1:
  7724. Bit    Name    Description
  7725. 7-1    Reserved
  7726. 0    RPL
  7727.     If =1 then enable RPLSET,RPLVAL# pins
  7728.     If =0 this pins are disable and float.
  7729.  
  7730. NCRi:
  7731. Byte    Bits    Description
  7732. 0    7-0    Address bits A31-A24 of non-cacheble region  start
  7733.         (Reserved for Cx486SLC)
  7734. 1    7-0    Address bits A23-A16 of non-cachable region start
  7735. 2    7-4    Address bits A15-A12 of non-cacheble region start
  7736. 2    3-0    Size of non-cacheble block:
  7737.         0000  Disable NCRi
  7738.         0001  4K
  7739.         0010  8K
  7740.         0011  16K
  7741.         0100  32K
  7742.         0101  64K
  7743.         0110  128K
  7744.         0111  256K
  7745.         1000  512K
  7746.         1001  1M
  7747.         1010  2M
  7748.         1011  4M
  7749.         1100  8M
  7750.         1101  16M
  7751.         1110  32M
  7752.         1111  4G
  7753.  
  7754. NCRi bytes:
  7755.  
  7756.     Byte
  7757. NCRi    0    1    2
  7758. NCR1    C4H    C5H    C6H
  7759. NCR2    C7H    C8H    C9H
  7760. NCR3    CAH    CBH    CCH
  7761. NCR4    CDH    CEH    CFH
  7762.  
  7763. ---------------------------------------------------
  7764. APPENDIX    A1
  7765. Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  7766. IBM   BL486DX/DX2
  7767. configuration Registers
  7768.  
  7769. Register    Full Register Name        Index    size(bits)
  7770. CCR1    Configuration Control Register #1    C1H    8
  7771. CCR2    Configuration Control Register #2    C2H    8
  7772. CCR3    Configuration Control Register #3    C3H    8
  7773. SMAR    SMM Address Region            CDH-CFH 24
  7774. DIR0    Device Identification register #0    FEH    8
  7775. DIR1    Device Identification register #1    FFH    8
  7776.  
  7777. For access to this register You need to do:
  7778.  
  7779. A) write INDEX_OF_REGISTER to I/O port #22H
  7780. B) wait 5-6 clocks
  7781. D) read/write DATA from/to register via I/O port #23
  7782.  
  7783. Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
  7784.       CPU generated external bus cycle. If You try to read I/O port
  7785.       #22H CPU will generated external bus cycle too. Then index
  7786.       is out of range all operations with port #23H will generate
  7787.       external bus cycle.
  7788.  
  7789. State After Reset:
  7790.     CCR1    00H
  7791.     CCR2    00H
  7792.     CCR3    00H
  7793.     SMAR    0
  7794.     DIR0    see DIR0 description
  7795.     DIR1    see DIR1 description
  7796.  
  7797. format of registers:
  7798.  
  7799. CCR1:
  7800. Bit    Name    Description
  7801. 7..5        Reserved
  7802.  
  7803. 4    NO_LOCK    (Negate LOCK#)
  7804. 3    MMAC    (Main Memory Access)
  7805.         If =1 then all data access which occur within SMI
  7806.         routine (when SMAC=1) accessing main memory instead
  7807.         SMM space
  7808.         =0 No affects on access
  7809. 2    SMAC    (System Managment Memory Access)
  7810.         If =1 Any access within SMM memory space issued with SMAADS#
  7811.         output active, SMI# ignored
  7812.         =0 No affects on access
  7813. 1    SMI    (Enable SMM pins)
  7814.         If =1 then enable SMI# i/o pin and SMADS# output pin
  7815.         =0 Float it
  7816. 0    RPL    (Enable RPL pins)
  7817.         If=1 then enable output pins RPLSET(1-0) and RPLVAL#
  7818.         =0 Float it
  7819.  
  7820. CCR2:
  7821. Bit    Name    Description
  7822. 7    SUSP    (Enable Suspend pins)
  7823.         If =1 SUSP# input and SUSPA# output pins enabled
  7824.         =0 Float
  7825. 6    BWRT    (Enable Burst Write Cycle)
  7826.         If =1 enable use of 16byte burst WB cycle
  7827.         =0 disable
  7828. 5    BARB    (Enable cache coherency on Bus Arbitration)
  7829.         If =1 enable write back of all dirty cache data when
  7830.         HOLD is requered and prior to asserting HLDA.
  7831.         =0 isable
  7832. 4    WT1    (Write-Through Region 1)
  7833.         If =1 Forces all writes to the 640KB-1MB region that
  7834.         hit in cache issued on the external bus
  7835. 3    HALT    (Suspend on HALT)
  7836.         If =1 CPU enters suspend mode following execution
  7837.         HLT instruction.
  7838. 2    LOCK_NW (Lock NW bit)
  7839.         If =1 Prohibits changing the state of NW bit in CR0
  7840. 1    WBAK    (Enable WB Cache Interface pins)
  7841.         If =1 then enable INVAL,WM_RST and HITM# pins
  7842.         =0 float it
  7843. 0    COP??    Reserved
  7844.         (Award BIOS used this bit during coprocessor Test,
  7845.         in Cx486S, Cx486S2 only)
  7846.         (may be turn coprocessor on :)))
  7847.  
  7848. CCR3:
  7849. Note: Cyrix Cx486S/D never have CCR3 register.
  7850. Bit    Name    Description
  7851. 7..2        Reserved
  7852. 1    NMIEN    (NMI Enable)
  7853.         If =1 then NMI enable during SMM
  7854.         If =0 NMI don't recognizing during SMM
  7855. 0      SMI_LOCK (SMM Register Lock)
  7856.         If =1 the following SMM control bits can not
  7857.         be modified:
  7858.              CCR1: bits 1,2,3
  7859.              CCR3: bit 1
  7860.         But this bit may be changed in SMM.
  7861.         This bit (SMI_LOCK) clearing RESET only.
  7862.  
  7863. SMAR:
  7864. (Index CDh)
  7865. Bit    Description
  7866. 7..0    A31..A24 bits of starting adress of SMM region
  7867. (Index CEh)
  7868. Bit    Description
  7869. 7..0    A23..A16 bits of starting adress of SMM region
  7870. (Index CFh)
  7871. Bit    Description
  7872. 7..4    A15..A12 bits of starting adress of SMM region
  7873. 3..0    Size of SMM region:
  7874.     0000    SMM region disabled
  7875.     0001    4K
  7876.     0010    8K
  7877.     0011    16K
  7878.     0100    32K
  7879.     0101    64K
  7880.     0110    128K
  7881.     0111    256K
  7882.     1000    512K
  7883.     1001    1M
  7884.     1010    2M
  7885.     1011    4M
  7886.     1100    8M
  7887.     1101    16M
  7888.     1110    32M
  7889.     1111    4K
  7890.  
  7891. DIR0:
  7892. Bit    Description
  7893. 7..0    (Device Identification)
  7894.     for Cx486SLC/e          = 00h
  7895.     for Cx486DLC          = 01h
  7896.     for Cx486SLC2          = 02h
  7897.     for Cx486DLC2          = 03h
  7898.     for Cx486SRx          = 04h
  7899.     for Cx486DRx          = 05h
  7900.     for Cx486SRx2          = 06h
  7901.     for Cx486DRx2          = 07h
  7902.     for Cx486SRu          = 08h
  7903.     for Cx486DRu          = 09h
  7904.     for Cx486SRu2          = 0Ah
  7905.     for Cx486DRu2          = 0Bh
  7906.     for Cx486S (B step)   = 10h
  7907.     for Cx486S2          = 11h
  7908.     for Cx486Se          = 12h or 14h or 16h
  7909.     for Cx486S2/e          = 13h or 15h or 17h
  7910.     for Cx486DX/BL486DX   = 1Ah
  7911.     for Cx486DX2/BL486DX2 = 1Bh
  7912.     for ST486DX2          = 1Bh
  7913.     for TI486DX2          = 1Bh
  7914.     for Cx486DX4 (x2 mode)= 1Bh  (x2 mode)
  7915.                       Note: DIR1 = 36h for DX4
  7916.                 1Fh  (x3 mode)
  7917.     for Cx5x86   (M1sc)   = 28h  (x1,S)
  7918.                   = 29h  (x2,S)
  7919.                   = 2Ah  (x1,P)
  7920.                   = 2Bh  (x2,P)
  7921.                   = 2Ch  (x4,S)
  7922.                   = 2Dh  (x3,S)
  7923.                   = 2Eh  (x4,P)
  7924.                   = 2Fh  (x3,P)
  7925.     for Cyrix Cx6x86 (M1) = 20h,30h (1x,S)
  7926.                   = 21h,31h (2x,S)
  7927.                   =    22h,32h (1x,P)
  7928.                   =    23h,33h (2x,P)
  7929.                   =    24h,34h (4x,S)
  7930.                   =    25h,35h (3x,S)
  7931.                   =    26h,36h (4x,P)
  7932.                   =    27h,37h (3x,P)
  7933.     for Cyrix Cx6x86L(M1) = 30h (1x)    [DIR1 > 21h]
  7934.                   = 31h (2x)    [DIR1 > 21h]
  7935.                   = 35h (3x)    [DIR1 > 21h]
  7936.                   = 34h (4x)    [DIR1 > 21h]
  7937.     for  Cyrix MediaGX    = 41h (3x)
  7938.                   = 44h (4x,S)
  7939.                   = 45h (3x,S)
  7940.                   = 46h (4x,P)
  7941.                   = 47h (3x,P)
  7942.     for Cyrix GXm          = 40h (4x)
  7943.                   = 41h (6x)
  7944.                   = 42h (4x)
  7945.                   = 43h (6x)
  7946.                   = 44h (7x)
  7947.                   = 45h (8x)
  7948.                   = 46h (7x)
  7949.                   = 47h (5x)
  7950.     for Cyrix 6x86MX (M2) = 50h (1.5x,S)
  7951.                   = 51h (2x,S)
  7952.                   = 52h (2.5x,S)
  7953.                   = 53h (3x,S)
  7954.                   = 54h (3.5x,S)
  7955.                   = 55h (4x,S)
  7956.                   = 56h (4.5x,S)
  7957.                   = 57h (5x,S)
  7958.                   = 58h (1,5x,P)
  7959.                   = 59h (2x,P)
  7960.                   = 5Ah (2.5x,P)
  7961.                   = 5Bh (3x,P)
  7962.                   = 5Ch (3.5x,P)
  7963.                   = 5Dh (4x,P)
  7964.                   = 5Eh (4.5x,P)
  7965.                   = 5Fh (5x,P)
  7966.     for TI486DX4          = 81h
  7967.     for Cyrix OverDrive   = FDh
  7968.     for TI Potomac's      = FFh  ;; None connections
  7969.  
  7970. Important Note: The original Cx486SLC never have DIRi registers.
  7971.  
  7972. DIR1:
  7973. Note: Cyrix Cx486S/D never have DIR1 register.
  7974. Bit    Name    Description
  7975. 7..4    SID    Stepping Identificator
  7976. 3..0    RID    Revision Identification
  7977.  
  7978. See Appendix A3 for more information
  7979.  
  7980. CPU        DIR0    DIR1    NOTE
  7981. Cx486DX-40    1Ah    05h
  7982. Cx486DX-50    1Ah    05h
  7983. Cx486DX2-50    1Bh    08h
  7984. Cx486DX2-50    1Bh    08h    Marked 001 on pin side of chip
  7985. ST486DX2-66    1Bh    0Bh
  7986. ST486DX2-66    1Bh    0Bh
  7987.  
  7988. Cx486DX2-v80    1Bh    31h    3 VOLT
  7989. Cx486DX4-v100    1Fh    36h    3 VOLT
  7990. Cx5x86-100    2Dh    13h    3 VOLT
  7991.  
  7992. TI486DX2-66,80    1Bh    32h    stepping eA0
  7993. TI486DX2-66,80    1Bh    B2h    stepping eB0
  7994. TI486DX4-100    81h    91h
  7995.  
  7996. -----------------------------------------------------
  7997. APPENDIX    A2
  7998. TI486SXLC/SXL  configuration Registers
  7999.  
  8000. for TI486SXL
  8001. --------------
  8002. Register    Full Register Name        Index    size(bits)
  8003. CCR0    Configuration Control Register #0    C0H    8
  8004. CCR1    Configuration Control Register #1    C1H    8
  8005. ARR1    Address Region #1            C4H-C6H    24
  8006. ARR2    Address Region #2            C7H-C9H    24
  8007. ARR3    Address Region #3            CAH-CCH 24
  8008. ARR4    Address Region #4            CDH-CFH    24
  8009.  
  8010. for TI486SXLC
  8011. --------------
  8012. Register    Full Register Name        Index    size(bits)
  8013. CCR0    Configuration Control Register #0    C0H    8
  8014. CCR1    Configuration Control Register #1    C1H    8
  8015. ARR1    Address Region #1            C5H-C6H    16
  8016. ARR2    Address Region #2            C8H-C9H    16
  8017. ARR3    Address Region #3            CBH-CCH 16
  8018. ARR4    Address Region #4            CEH-CFH    16
  8019.  
  8020. For access to this register You need to do:
  8021.  
  8022. A) write INDEX_OF_REGISTER to I/O port #22H
  8023. B) wait 5-6 clocks
  8024. D) read/write DATA from/to register via I/O port #23
  8025.  
  8026. Note: If Index of register not in range C0H..CFH then Cyrix CPU
  8027.       generated external bus cycle. If You try to read I/O port
  8028.       #22H CPU will generated external bus cycle too. Then index
  8029.       is out of range all operations with port #23H will generate
  8030.       external bus cycle.
  8031.  
  8032. State After Reset:
  8033.     CCR0    00H
  8034.     CCR1    xxxx xxx0B
  8035.     ARR1    000Fh        ; 4Gbyte Non-Caching Region
  8036.     ARR2    0
  8037.     ARR3    0
  8038.     ARR4    0
  8039.  
  8040. format of registers:
  8041.  
  8042. CCR0:
  8043. Bit    Name    Description
  8044. 7    SUS
  8045.     If =1 then enable SUSP# and SUSPA# pins, which used for
  8046.     put CPU in PowerSave mode.
  8047.     If =0 disable
  8048.  
  8049. 6    CKD (Clock Double)
  8050.     If =0 Disable Clock-double mode
  8051.     If =1 Enable Clock-Double mode
  8052.  
  8053. 5    BARB
  8054.     If =1 then enable flushing internal cache when begining
  8055.     HOLD state.
  8056.     IF =0 disable.
  8057.  
  8058. 4    FLUSH
  8059.     If =1 enable input pin FLUSH#
  8060.     if =0 disable
  8061.  
  8062. 3    KEN
  8063.     If =1 enable input pin KEN#
  8064.     if =0 disable
  8065.  
  8066. 2    A20M
  8067.     If =1 enable input pin A20M#
  8068.     if =0 disable
  8069.  
  8070. 1    NC1
  8071.     If=1 then 640KB-1MB area never caching
  8072.     If=0 caching (but see NCRi)
  8073.  
  8074. 0    NC0
  8075.     If=1 then first 64K of each 1MB bounds not caching,
  8076.     when in Real or Virtual8086 mode
  8077.     If =0 caching
  8078.  
  8079. CCR1:
  8080. Bit    Name    Description
  8081. 7    SM4
  8082.     Access Region 4 Control
  8083.     If=1 then Region 4 is non-cachable SMM Memory Space
  8084.     If=0 Region 4 is non-cachable. SMI# input ignored.
  8085.  
  8086. 6    WP3
  8087.     Access Region 3 Control
  8088.     If=1 then Region 3 is write-protected and cachable
  8089.     If=0 Region 3 is non-cachable.
  8090.  
  8091. 5    WP2
  8092.     Access Region 2 Control
  8093.     If=1 then Region 2 is write-protected and cachable
  8094.     If=0 Region 2 is non-cachable.
  8095.  
  8096. 4    WP1
  8097.     Access Region 1 Control
  8098.     If=1 then Region 1 is write-protected and cachable
  8099.     If=0 Region 1 is non-cachable.
  8100.  
  8101. 3    NMAC
  8102.     Main Memory Access
  8103.     If=1 All data accesses which occur within SMI service routine
  8104.     (or then SMAC=1) will access main memory instead of SMM Memory space
  8105.     If=0 No changes in access
  8106.  
  8107. 2    SMAC
  8108.     System Managment memory access
  8109.     If=1 Any access to addresses within SMM memory space cause external bus
  8110.     cycles to be issued with SMADS# output active. SMI# input is ignored.
  8111.  
  8112. 1    SMI
  8113.     Enable SMM Pins
  8114.     If=1 SMI# input/output pin and SMADS# output pin are enabled
  8115.     If=0 Disabled
  8116.  
  8117. 0    Reserved
  8118.  
  8119. ARRi:
  8120. Byte    Bits    Description
  8121. 0    7-0    Address bits A31-A24 of non-cacheble region  start
  8122.         (Reserved for TI486SXLC)
  8123. 1    7-0    Address bits A23-A16 of non-cachable region start
  8124. 2    7-4    Address bits A15-A12 of non-cacheble region start
  8125. 2    3-0    Size of non-cacheble block:
  8126.         0000  Disable NCRi
  8127.         0001  4K
  8128.         0010  8K
  8129.         0011  16K
  8130.         0100  32K
  8131.         0101  64K
  8132.         0110  128K
  8133.         0111  256K
  8134.         1000  512K
  8135.         1001  1M
  8136.         1010  2M
  8137.         1011  4M
  8138.         1100  8M
  8139.         1101  16M
  8140.         1110  32M
  8141.         1111  4G
  8142.  
  8143. ARRi bytes:
  8144.  
  8145.     Byte
  8146. ARRi    0    1    2
  8147. ARR1    C4H    C5H    C6H
  8148. ARR2    C7H    C8H    C9H
  8149. ARR3    CAH    CBH    CCH
  8150. ARR4    CDH    CDH    CEH
  8151.  
  8152. ---------------------------------------------------
  8153. APPENDIX    A3
  8154. Texas Instruments  TI486DX2,TI486DX4
  8155. configuration Registers
  8156.  
  8157. Register    Full Register Name        Index    size(bits)
  8158. CCR1    Configuration Control Register #1    C1H    8
  8159. CCR2    Configuration Control Register #2    C2H    8
  8160. CCR3    Configuration Control Register #3    C3H    8
  8161. SMAR    SMM Address Region            CDH-CFH 24
  8162. DIR0    Device Identification register #0    FEH    8
  8163. DIR1    Device Identification register #1    FFH    8
  8164.  
  8165. For access to this register You need to do:
  8166.  
  8167. A) write INDEX_OF_REGISTER to I/O port #22H
  8168. B) wait 5-6 clocks
  8169. D) read/write DATA from/to register via I/O port #23
  8170.  
  8171. Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
  8172.       CPU generated external bus cycle. If You try to read I/O port
  8173.       #22H CPU will generated external bus cycle too. Then index
  8174.       is out of range all operations with port #23H will generate
  8175.       external bus cycle.
  8176.  
  8177. State After Reset:
  8178.     CCR1    00H
  8179.     CCR2    00H
  8180.     CCR3    00H
  8181.     SMAR    0
  8182.     DIR0    see DIR0 description
  8183.     DIR1    see DIR1 description
  8184.  
  8185. format of registers:
  8186.  
  8187. CCR1:
  8188. Bit    Name    Description
  8189. 7..5        Reserved
  8190.  
  8191. 4    NO_LOCK    (Negate LOCK#)
  8192.         If =0  Usuall scheme
  8193.         If =1  previously noncachable locked cycles will be
  8194.         executed as unlocked, result is higher perfomanse.
  8195. 3    MMAC    (Main Memory Access)
  8196.         If =1 then all data access which occur within SMI
  8197.         routine (when SMAC=1) accessing main memory instead
  8198.         SMM space
  8199.         =0 No affects on access
  8200. 2    SMAC    (System Managment Memory Access)
  8201.         If =1 Any access within SMM memory space issued with SMAADS#
  8202.         output active, SMI# ignored
  8203.         =0 No affects on access
  8204. 1    SMI    (Enable SMM pins)
  8205.         If =1 then enable SMI# i/o pin and SMADS# output pin
  8206.         =0 Float it
  8207. 0    RPL    (Enable RPL pins)
  8208.         If=1 then enable output pins RPLSET(1-0) and RPLVAL#
  8209.         =0 Float it
  8210.  
  8211. CCR2:
  8212. Bit    Name    Description
  8213. 7    SUSP    (Enable Suspend pins)
  8214.         If =1 SUSP# input and SUSPA# output pins enabled
  8215.         =0 Float
  8216. 6    BWRT    (Enable Burst Write Cycle)
  8217.         If =1 enable use of 16byte burst WB cycle
  8218.         =0 disable
  8219. 5    BARB    (Enable cache coherency on Bus Arbitration)
  8220.         If =1 enable write back of all dirty cache data when
  8221.         HOLD is requered and prior to asserting HLDA.
  8222.         =0 isable
  8223. 4    WT1    (Write-Through Region 1)
  8224.         If =1 Forces all writes to the 640KB-1MB region that
  8225.         hit in cache issued on the external bus
  8226. 3    HALT    (Suspend on HALT)
  8227.         If =1 CPU enters suspend mode following execution
  8228.         HLT instruction.
  8229. 2    LOCK_NW (Lock NW bit)
  8230.         If =1 Prohibits changing the state of NW bit in CR0
  8231. 1    WBAK    (Enable WB Cache Interface pins)
  8232.         If =1 then enable INVAL,WM_RST and HITM# pins
  8233.         =0 float it
  8234. 0        Reserved
  8235.  
  8236. CCR3:
  8237. Note: Cyrix Cx486S/D never have CCR3 register.
  8238. Bit    Name    Description
  8239. 7..4        Reserved
  8240. 3    SM_MODE (SMM Mode Select)
  8241.         If =0 then Normal SMM mode (Cyrix style)
  8242.         If =1 then SL-compatible mode
  8243.             (but SMI_LOCK MUST BE 0)
  8244.         Note: For more info refer to
  8245.            "TI486DX2 Microprocessor SM Mode Programming Guide"
  8246.            // Texas Instruments 1995 (literature number SRZU019)
  8247. 2        Reserved
  8248. 1    NMIEN    (NMI Enable)
  8249.         If =1 then NMI enable during SMM
  8250.         If =0 NMI don't recognizing during SMM
  8251. 0      SMI_LOCK (SMM Register Lock)
  8252.         If =1 the following SMM control bits can not
  8253.         be modified:
  8254.              CCR1: bits 1,2,3
  8255.              CCR3: bit 1
  8256.              Any SMAR bits
  8257.         But this bit may be changed in SMM.
  8258.         This bit (SMI_LOCK) clearing RESET only.
  8259.  
  8260. SMAR:
  8261. (Index CDh)
  8262. Bit    Description
  8263. 7..0    A31..A24 bits of starting adress of SMM region
  8264. (Index CEh)
  8265. Bit    Description
  8266. 7..0    A23..A16 bits of starting adress of SMM region
  8267. (Index CFh)
  8268. Bit    Description
  8269. 7..4    A15..A12 bits of starting adress of SMM region
  8270. 3..0    Size of SMM region:
  8271.     0000    SMM region disabled
  8272.     0001    4K
  8273.     0010    8K
  8274.     0011    16K
  8275.     0100    32K
  8276.     0101    64K
  8277.     0110    128K
  8278.     0111    256K
  8279.     1000    512K
  8280.     1001    1M
  8281.     1010    2M
  8282.     1011    4M
  8283.     1100    8M
  8284.     1101    16M
  8285.     1110    32M
  8286.     1111    4K
  8287.  
  8288. DIR0:
  8289. Bit    Description
  8290. 7..0    (Device Identification)
  8291.     for TI486DX2  =     1Bh  (compare with Cyrix's DIR0)
  8292.     for TI486DX4  =     81h
  8293.  
  8294. DIR1:
  8295. Bit    Name    Description
  8296. 7    MID    Manafacturer ID
  8297.         0 = Cyrix
  8298.         1 = Texas Instruments  (support starting TI486DX2 eB0 steping)
  8299. 6..4    SID    Stepping Identificator
  8300. 3..0    RID    Revision Identification
  8301.  
  8302. see Appendix A1 for more info about identification.
  8303.  
  8304. ---------------------------------------------------
  8305. APPENDIX    A4
  8306. Cyrix Cx5x86, IBM 5x86
  8307. configuration Registers
  8308.                                    for access
  8309. Register    Full Register Name        Index    size(bits) MAPEN(3..0)
  8310. PCR0    Perfomance Control register        20h    8        1
  8311. CCR1    Configuration Control Register #1    C1H    8        x
  8312. CCR2    Configuration Control Register #2    C2H    8        x
  8313. CCR3    Configuration Control Register #3    C3H    8        x
  8314. CCR4    Configuration Control Register #4    E8h    8        1
  8315. SMAR    SMM Address Region            CDH-CFH 24        x
  8316. PMR    Power Managment register        F0h    8        1
  8317. DIR0    Device Identification register #0    FEH    8        x
  8318. DIR1    Device Identification register #1    FFH    8        x
  8319.  
  8320. For access to this register You need to do:
  8321.  
  8322. A) write INDEX_OF_REGISTER to I/O port #22H
  8323. B) wait 5-6 clocks
  8324. D) read/write DATA from/to register via I/O port #23
  8325.  
  8326. Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
  8327.       CPU generated external bus cycle. If You try to read I/O port
  8328.       #22H CPU will generated external bus cycle too. Then index
  8329.       is out of range all operations with port #23H will generate
  8330.       external bus cycle.
  8331.  
  8332. State After Reset:
  8333.     CCR1    00H
  8334.     CCR2    00H
  8335.     CCR3    00H
  8336.     SMAR    0
  8337.     DIR0    see DIR0 description
  8338.     DIR1    see DIR1 description
  8339.  
  8340. format of registers:
  8341.  
  8342. PCR0:
  8343. Bit    Name    Description
  8344. 7    LSSER    If set, all memory reads/writes will occur in execution order
  8345. 6..3        Reserved
  8346. 2    LOOP_EN    If set, enables faster support for loops.
  8347. 1    BTB_EN    If set, enables the Branch Target Buffer for branch prediction
  8348. 0    RSTK_EN If se, enables call return stack
  8349.  
  8350. CCR1:
  8351. Bit    Name    Description
  8352. 7..4        Reserved
  8353. 3    MMAC    (Main Memory Access)
  8354.         If =1 then all data access which occur within SMI
  8355.         routine (when SMAC=1) accessing main memory instead
  8356.         SMM space
  8357.         =0 No affects on access
  8358. 2    SMAC    (System Managment Memory Access)
  8359.         If =1 Any access within SMM memory space issued with SMAADS#
  8360.         output active, SMI# ignored
  8361.         =0 No affects on access
  8362. 1    SMI    (Enable SMM pins)
  8363.         If =1 then enable SMI# i/o pin and SMADS# output pin
  8364.         =0 Float it
  8365. 0        Reserved
  8366.  
  8367. CCR2:
  8368. Bit    Name    Description
  8369. 7    SUSP    (Enable Suspend pins)
  8370.         If =1 SUSP# input and SUSPA# output pins enabled
  8371.         =0 Float
  8372. 6    BWRT    (Enable Burst Write Cycle)
  8373.         If =1 enable use of 16byte burst WB cycle
  8374.         =0 disable
  8375. 5        Reserved
  8376. 4    WT1    (Write-Through Region 1)
  8377.         If =1 Forces all writes to the 640KB-1MB region that
  8378.         hit in cache issued on the external bus
  8379. 3    HALT    (Suspend on HALT)
  8380.         If =1 CPU enters suspend mode following execution
  8381.         HLT instruction.
  8382. 2    LOCK_NW (Lock NW bit)
  8383.         If =1 Prohibits changing the state of NW bit in CR0
  8384. 1    WBAK    (Enable WB Cache Interface pins)
  8385.         If =1 then enable INVAL,WM_RST and HITM# pins
  8386.         =0 float it
  8387. 0        Reserved
  8388.  
  8389. CCR3:
  8390. Bit    Name    Description
  8391. 7..4    MAPEN(3-0) (Register Mapping Enable)
  8392.         If set to 0001b all register accessible,
  8393.         else 0000h then accessed only (C0j-CFh,FEh,FFh)
  8394. 3    SMM_MODE
  8395.         If =1, then CPU hardware interface pins are redefined to
  8396.         function like SMM hardware interface on SL Enhanced Intel's CPUs
  8397. 2    LINBRST
  8398.         If =1, CPU will use linear address sequence when performing
  8399.         burst cycle, If =0 CPU will used 1+4 address sequence.
  8400. 1    NMIEN    (NMI Enable)
  8401.         If =1 then NMI enable during SMM
  8402.         If =0 NMI don't recognizing during SMM
  8403. 0      SMI_LOCK (SMM Register Lock)
  8404.         If =1 the following SMM control bits can not
  8405.         be modified:
  8406.              CCR1: bits 1,2,3
  8407.              CCR3: bit 1
  8408.         But this bit may be changed in SMM.
  8409.         This bit (SMI_LOCK) clearing RESET only.
  8410.  
  8411. SMAR:
  8412. (Index CDh)
  8413. Bit    Description
  8414. 7..0    A31..A24 bits of starting adress of SMM region
  8415. (Index CEh)
  8416. Bit    Description
  8417. 7..0    A23..A16 bits of starting adress of SMM region
  8418. (Index CFh)
  8419. Bit    Description
  8420. 7..4    A15..A12 bits of starting adress of SMM region
  8421. 3..0    Size of SMM region:
  8422.     0000    SMM region disabled
  8423.     0001    4K
  8424.     0010    8K
  8425.     0011    16K
  8426.     0100    32K
  8427.     0101    64K
  8428.     0110    128K
  8429.     0111    256K
  8430.     1000    512K
  8431.     1001    1M
  8432.     1010    2M
  8433.     1011    4M
  8434.     1100    8M
  8435.     1101    16M
  8436.     1110    32M
  8437.     1111    4K
  8438.  
  8439. CCR4:
  8440. Bit    Name    Description
  8441. 7    CPUIDEN    (Enable CPUID instruction)
  8442.         If =1 bit 21 of EFLAGS (ID) may changed, and CPUID instruction
  8443.         enabled,
  8444.         else bit 21 of EFLAGS =0 forever and CPUID caused INT 6 -
  8445.         Invalid Opcode
  8446. 6        Reserved
  8447. 5    FP_FAST
  8448.         If =1, FPU execution reporting enabled
  8449. 4    DTE
  8450.         If =1, Directory Table Entry cache is enabled
  8451. 3    MEM_BYP
  8452.         If =1, Enabled memory read bypassing
  8453. 2..0    IORT[2..0]
  8454.         Specify minimum number of bus clocks between two I/O
  8455.         accesses (I/O recovery time)
  8456.         000    -    No Delay
  8457.         001    -    2 clk
  8458.         010    -    4 clk
  8459.         011    -    8 clk
  8460.         100    -    16 clk
  8461.         101    -    32 clk    (Default Value)
  8462.         110    -    64 clk
  8463.         111    -    128 clk
  8464.  
  8465. PMR:
  8466. Bit    Name    Description
  8467. 7..3        Reserved
  8468. 2..0    CLK[2..0]
  8469.         Select Bus/Core Operation Frequency
  8470.         CLK2  CLK1 CLK0      Core/Bus
  8471.          1     x    x        1/2
  8472.          0     0    0        1/1
  8473.          0     0    1        2/1
  8474.          0     1    0        3/1
  8475.          0     1    1        reserved
  8476.  
  8477. DIR0:
  8478. Bit    Description
  8479. 7..0    (Device Identification)
  8480.     Value        Description    Core/Bus clk
  8481.     29h or 2Bh    Cx/IBM/ST 5x86    2/1
  8482.     2Dh or 2Fh    Cx/IBM/ST 5x86    3/1
  8483.  
  8484. DIR1:
  8485. Bit    Name    Description
  8486. 7..4    SID    Stepping Identificator
  8487. 3..0    RID    Revision Identification
  8488.  
  8489. Note:    5x86 Cyrix/IBM/ST
  8490.     Stepping    Revision
  8491.        0          0    EDX after reset = [15:8]=DIR1, [7:0]=DIR0
  8492.        0          1    EDX after reset = [15:8]=DIR1, [7:0]=DIR0
  8493.        0          2    EDX after reset = [15:8]=04h   [7:0]=90h
  8494.        0          5
  8495.        1          3
  8496.  
  8497. see Appendix A1 for more info about identification.
  8498.  
  8499. ---------------------------------------------------
  8500. APPENDIX    A5
  8501. Cyrix Cx6x86 (M1), IBM 6x86
  8502. configuration Registers
  8503.                                    for access
  8504. Register    Full Register Name        Index    size(bits) MAPEN(3..0)
  8505. DBR0                        30H    8        ?
  8506. ???                        31H    8        ?
  8507. ???                        32H    8        ?
  8508. ???                        33H    8        ?
  8509. ???                        34H    8        ?
  8510. ???                        38H    8        ?
  8511. ???                        3CH    8        ?
  8512. CCR0    Configuration Control Register #0    C0H    8        x
  8513. CCR1    Configuration Control Register #1    C1H    8        x
  8514. CCR2    Configuration Control Register #2    C2H    8        x
  8515. CCR3    Configuration Control Register #3    C3H    8        x
  8516. ARR0    Address Region Register #0        C4H-C6H 24        x
  8517. ARR1    Address Region Register #1        C7H-C9H 24        x
  8518. ARR2    Address Region Register #2        CAH-CCH 24        x
  8519. ARR3    Address Region Register #3        CDH-CFH 24        x
  8520. ARR4    Address Region Register #4        D0H-D2H 24        1
  8521. ARR5    Address Region Register #5        D3H-D5H 24        1
  8522. ARR6    Address Region Register #6        D6H-D8H 24        1
  8523. ARR7    Address Region Register #7        D9H-DBH 24        1
  8524. RCR0    Region Configuration Register #0    DCh    8        1
  8525. RCR1    Region Configuration Register #1    DDh    8        1
  8526. RCR2    Region Configuration Register #2    DEh    8        1
  8527. RCR3    Region Configuration Register #3    DFh    8        1
  8528. RCR4    Region Configuration Register #4    E0h    8        1
  8529. RCR5    Region Configuration Register #5    E1h    8        1
  8530. RCR6    Region Configuration Register #6    E2h    8        1
  8531. RCR7    Region Configuration Register #7    E3h    8        1
  8532. CCR4    Configuration Control Register #4    E8h    8        1
  8533. CCR5    Configuration Control Register #5    E9h    8        1
  8534. DIR0    Device Identification register #0    FEH    8        x
  8535. DIR1    Device Identification register #1    FFH    8        x
  8536.  
  8537. For access to this register You need to do:
  8538.  
  8539. A) write INDEX_OF_REGISTER to I/O port #22H
  8540. B) wait 5-6 clocks
  8541. D) read/write DATA from/to register via I/O port #23
  8542.  
  8543. Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
  8544.       CPU generated external bus cycle. If You try to read I/O port
  8545.       #22H CPU will generated external bus cycle too. Then index
  8546.       is out of range all operations with port #23H will generate
  8547.       external bus cycle.
  8548.  
  8549. State After Reset:
  8550.     CCR1    00H
  8551.     CCR2    00H
  8552.     CCR3    00H
  8553.     SMAR    0
  8554.     DIR0    see DIR0 description
  8555.     DIR1    see DIR1 description
  8556.  
  8557. format of registers:
  8558.  
  8559. DBR0:
  8560. Note: This Register is Undocumented
  8561. Bit    Name    Description
  8562. 7    ?    ????
  8563. 6    ?    BTB TR access enabled
  8564.         if = 1 MOV to/from TR1/2 enabled
  8565. 5    ?    Data bypassing and forwarding Enable
  8566.         (default set to 1)
  8567. 4-0    ?    ???
  8568.  
  8569. Registers with Indexes 31h,32h,33h:
  8570. Used for perfomance control or CPU pipeline debbuging.
  8571. (Usually = 0).
  8572.  
  8573. Registers with indexes 34h,38h,3Ch exist, but description ????
  8574.  
  8575. CCR0:
  8576. Bit    Name    Description
  8577. 7..2        Reserved
  8578. 1    NC1    (Non-cachable 1MB)
  8579.         If =1 then area 640KM-1MB is non-cachable.
  8580.  
  8581. CCR1:
  8582. Bit    Name    Description
  8583. 7    SM3    (System Managment Address Region 3)
  8584.         If =1 then ARR3 used as SMM address space region
  8585. 6..5        Reserved
  8586. 4    NO_LOCK (No Lock Cycles)
  8587.         If =1 all bus cycles are issued with LOCK# pin negated, except
  8588.         page tables access and INTA cycles.
  8589. 3        Reserved
  8590. 2    SMAC    (System Managment Memory Access)
  8591.         If =1 Any access within SMM memory space issued with SMAADS#
  8592.         output active, SMI# ignored
  8593.         =0 No affects on access
  8594. 1    SMI    (Enable SMM pins)
  8595.         If =1 then enable SMI# i/o pin and SMADS# output pin
  8596.         =0 Float it
  8597. 0        Reserved
  8598.  
  8599. CCR2:
  8600. Bit    Name    Description
  8601. 7    SUSP    (Enable Suspend pins)
  8602.         If =1 SUSP# input and SUSPA# output pins enabled
  8603.         =0 Float
  8604. 6..5        Reserved
  8605. 4    WPR1    (Write-Protected Region 1)
  8606.         If =1 then any cachable accesses in the 640KB-1MB region
  8607.         are Write-Protected
  8608. 3    HALT    (Suspend on HALT)
  8609.         If =1 CPU enters suspend mode following execution
  8610.         HLT instruction.
  8611. 2    LOCK_NW (Lock NW bit)
  8612.         If =1 Prohibits changing the state of NW bit in CR0
  8613. 1..0        Reserved
  8614.  
  8615. CCR3:
  8616. Bit    Name    Description
  8617. 7..4    MAPEN(3-0) (Register Mapping Enable)
  8618.         If set to 0001b all register accessible,
  8619.         else 0000h then accessed only (C0h-CFh,FEh,FFh)
  8620. 3        Reserved
  8621. 2    LINBRST
  8622.         If =1, CPU will use linear address sequence when performing
  8623.         burst cycle, If =0 CPU will used 1+4 address sequence.
  8624. 1    NMIEN    (NMI Enable)
  8625.         If =1 then NMI enable during SMM
  8626.         If =0 NMI don't recognizing during SMM
  8627. 0      SMI_LOCK (SMM Register Lock)
  8628.         If =1 the following SMM control bits can not
  8629.         be modified:
  8630.              CCR1: bits 1,2,3
  8631.              CCR3: bit 1
  8632.              ARR3: Starting address and Block size
  8633.         But this bit may be changed in SMM.
  8634.         This bit (SMI_LOCK) clearing RESET only.
  8635.  
  8636. ARRi:
  8637.     -- Starting Address --- Region
  8638. ARR #    A31-A24    A23-A16    A15-A12 Block Size
  8639.      7..0     7..0      7..4     3..0        (Bits)
  8640. ARR0      C4h      C5h       C6h      C6h        (Index)
  8641. ARR1      C7h      C8h       C9h      C9h
  8642. ARR2      CAh      CBh       CCh      CCh
  8643. ARR3      CDh      CEh       CFh      CFh
  8644. ARR4      D0h      D1h       D2h      D2h
  8645. ARR5      D3h      D4h       D5h      D5h
  8646. ARR6      D6h      D7h       D8h      D8h
  8647. ARR7      D9h      DAh       DBh      DBh
  8648.     (ARRi^)
  8649.     (index)
  8650.  
  8651. (Index    ARRi+0)
  8652. Bit    Description
  8653. 7..0    A31..A24 bits of starting adress of region #i
  8654. (Index    ARRi+1)
  8655. Bit    Description
  8656. 7..0    A23..A16 bits of starting adress of region #i
  8657. (Index ARRi+2)
  8658. Bit    Description
  8659. 7..4    A15..A12 bits of starting adress of region #i
  8660. 3..0    Size of     region #i :
  8661.     Value    ARR0-ARR6    ARR7
  8662.     0000    **** region disabled ****
  8663.     0001    4K        256K
  8664.     0010    8K        512K
  8665.     0011    16K        1M
  8666.     0100    32K        2M
  8667.     0101    64K        4M
  8668.     0110    128K        8M
  8669.     0111    256K        16M
  8670.     1000    512K        32M
  8671.     1001    1M        64M
  8672.     1010    2M        128M
  8673.     1011    4M        256M
  8674.     1100    8M        512M
  8675.     1101    16M        1G
  8676.     1110    32M        2G
  8677.     1111    4K        4G
  8678.  
  8679. RCRi:
  8680. Bit    Name    ARR#    Description
  8681. 7..6        any    Reserved
  8682. 5    NBL    any    If =1 LBA# pin is negated for corresponding region
  8683. 4    WT    any    If =1 Write-Throught caching is enable for region
  8684. 3    WG    any    If =1 Write Gathering enabled for region
  8685. 2    WL    any    If =1 Weak Locking enable for region
  8686. 1    WWO    any    If =1 weak write ordering enable for region
  8687. 0    RCD    0..6    If =1 address region is non-cachable
  8688. 0    RCE    7    If=1 region is cachable and implies thet address space
  8689.             outside of region is non-cachable.
  8690.  
  8691. CCR4:
  8692. Bit    Name    Description
  8693. 7    CPUIDEN    (Enable CPUID instruction)
  8694.         If =1 bit 21 of EFLAGS (ID) may changed, and CPUID instruction
  8695.         enabled,
  8696.         else bit 21 of EFLAGS =0 forever and CPUID caused INT 6 -
  8697.         Invalid Opcode
  8698. 6..5        Reserved
  8699. 4    DTE
  8700.         If =1, Directory Table Entry cache is enabled
  8701. 3        Reserved
  8702. 2..0    IORT[2..0]
  8703.         Specify minimum number of bus clocks between two I/O
  8704.         accesses (I/O recovery time)
  8705.         (base modeL)            (some later models)
  8706.         000    -    No Delay      000  -  fast
  8707.         001    -    2 clk
  8708.         010    -    4 clk
  8709.         011    -    8 clk          .......
  8710.         100    -    16 clk
  8711.         101    -    32 clk    (Default Value)
  8712.         110    -    64 clk
  8713.         111    -    128 clk          111  - no delay
  8714.  
  8715. CCR5:
  8716. Bit    Name    Description
  8717. 7        Reserved
  8718. 6    VIPERM    If = 1 then prevents any access to contol registers outside of
  8719.         range C0..CF if MAPEN in CCR3 has the other value that 1.
  8720.         Note:
  8721.             This is effect of Disable CPU identification via DIR0
  8722.         and DIR1 (reads FFh while VIPERM=1 and MAPEN != 1).
  8723. 5    ARREN    (Address region registers Enable)
  8724.         If =1 then Enable all ARRs,
  8725.         If =0 all ARRs disable, but if SM3=1 then ARR3 enable.
  8726. 4    LBR1
  8727.         If =1 LBA# pin asserted for all accesses to the 640KB-1MB
  8728.         region
  8729. 3..2        Reserved
  8730. 1    SLOP    (Slow Loop Instruction)
  8731.         Slow Loop instruction make CPU more compatible with Pentium
  8732.         for critical-timing rootining.
  8733. 0    WT_ALLOC
  8734.         If =1 new cache lines allocated for both read misses and
  8735.         write misses, else only on read misses.
  8736.  
  8737. DIR0:
  8738. Bit    Description
  8739. 7..0    (Device Identification)
  8740.     Value        Description    Core/Bus clk    Note
  8741.     20h or 22h    6x86 (M1)    1/1        Early 6x86
  8742.     21h or 23h    6x86 (M1)    2/1
  8743.     25h or 27h    6x86 (M1)    4/1
  8744.     24h or 26h    6x86 (M1)    3/1
  8745.  
  8746.     30h or 32h    6x86 (M1)    1/1        Modern 6x86
  8747.     31h or 33h    6x86 (M1)    2/1
  8748.     35h or 37h    6x86 (M1)    4/1
  8749.     34h or 36h    6x86 (M1)    3/1
  8750.  
  8751. DIR1:
  8752. Bit    Name    Description
  8753. 7..4    SID    Stepping Identificator
  8754. 3..0    RID    Revision Identification
  8755.  
  8756.     Value    Description
  8757.     0xh  -    Old Cyrix Samplers of 6x86 ???
  8758.     1xh  -    Normal 6x86.
  8759.         10h,11h,12h - Early 6x86s (with DIR0 = 2xh)
  8760.         14h  - v2.4
  8761.         15h  - v2.5
  8762.         16h  - v2.6
  8763.         17h  - v2.7 or 3.7
  8764.                (first with no NT problems, with SLOP bit).
  8765.     2xh  -    6x86L (Dual Voltage,Lower Power)
  8766.         20h,21h - Samplers
  8767.         22h - v4.0 (no SLOP support)
  8768.  
  8769. Note: Register with Index FCh contains CPU family.
  8770.       Initialized by 05h, but may be changed by USER, look CPUID instruction
  8771.       for more info.
  8772.  
  8773. see Appendix A1 for more info about identification
  8774.         -----------------------------
  8775.  
  8776. Format of TR1,TR2 registers:
  8777.     (Table )
  8778. Note: Need to Enable MOV to/from TR1/2 using DBR0 register in processor
  8779.       control space.
  8780.  
  8781. TR1:
  8782. Bits    Description
  8783. 31..5?    ?????
  8784. 5..3    Index of register in BTB Control space.
  8785.     (Register will be accesable via TR2)
  8786. 2..0    ????
  8787.  
  8788. TR2:
  8789. Data, which will be written/reading from/to register
  8790.  
  8791. Registers in BTB control space:
  8792.  
  8793.     Reg 4 -    ???????
  8794.     Reg 5:
  8795.         Bits    Description
  8796.         0    BTB Disable
  8797.         1    Far BTB COF hits enable.
  8798.             If =1 enable BTB to predict intersegment jumps.
  8799.         2    Return Stack Enable
  8800.         3    ???? (used)
  8801.         4..31    ?????
  8802.  
  8803. ---------------------------------------------------
  8804. APPENDIX    A6
  8805. Cyrix Cx6x86MX (M2)
  8806.                                    for access
  8807. Register    Full Register Name        Index    size(bits) MAPEN(3..0)
  8808. CCR0    Configuration Control Register #0    C0H    8        x
  8809. CCR1    Configuration Control Register #1    C1H    8        x
  8810. CCR2    Configuration Control Register #2    C2H    8        x
  8811. CCR3    Configuration Control Register #3    C3H    8        x
  8812. ARR0    Address Region Register #0        C4H-C6H 24        x
  8813. ARR1    Address Region Register #1        C7H-C9H 24        x
  8814. ARR2    Address Region Register #2        CAH-CCH 24        x
  8815. ARR3    Address Region Register #3        CDH-CFH 24        x
  8816. ARR4    Address Region Register #4        D0H-D2H 24        1
  8817. ARR5    Address Region Register #5        D3H-D5H 24        1
  8818. ARR6    Address Region Register #6        D6H-D8H 24        1
  8819. ARR7    Address Region Register #7        D9H-DBH 24        1
  8820. RCR0    Region Configuration Register #0    DCh    8        1
  8821. RCR1    Region Configuration Register #1    DDh    8        1
  8822. RCR2    Region Configuration Register #2    DEh    8        1
  8823. RCR3    Region Configuration Register #3    DFh    8        1
  8824. RCR4    Region Configuration Register #4    E0h    8        1
  8825. RCR5    Region Configuration Register #5    E1h    8        1
  8826. RCR6    Region Configuration Register #6    E2h    8        1
  8827. RCR7    Region Configuration Register #7    E3h    8        1
  8828. CCR4    Configuration Control Register #4    E8h    8        1
  8829. CCR5    Configuration Control Register #5    E9h    8        1
  8830. CCR6    Configuration Control Register #6    EAh    8        1
  8831. DIR0    Device Identification register #0    FEH    8        x
  8832. DIR1    Device Identification register #1    FFH    8        x
  8833.  
  8834. For access to this register You need to do:
  8835.  
  8836. A) write INDEX_OF_REGISTER to I/O port #22H
  8837. B) wait 5-6 clocks
  8838. D) read/write DATA from/to register via I/O port #23
  8839.  
  8840. Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
  8841.       CPU generated external bus cycle. If You try to read I/O port
  8842.       #22H CPU will generated external bus cycle too. Then index
  8843.       is out of range all operations with port #23H will generate
  8844.       external bus cycle.
  8845.  
  8846. State After Reset:
  8847.     CCR1    00H
  8848.     CCR2    00H
  8849.     CCR3    00H
  8850.     SMAR    0
  8851.     DIR0    see DIR0 description
  8852.     DIR1    see DIR1 description
  8853.  
  8854. format of registers:
  8855.  
  8856. CCR0:
  8857. Bit    Name    Description
  8858. 7..2        Reserved
  8859. 1    NC1    (Non-cachable 1MB)
  8860.         If =1 then area 640KM-1MB is non-cachable.
  8861.  
  8862. CCR1:
  8863. Bit    Name    Description
  8864. 7    SM3    (System Managment Address Region 3)
  8865.         If =1 then ARR3 used as SMM address space region
  8866. 6..5        Reserved
  8867. 4    NO_LOCK (No Lock Cycles)
  8868.         If =1 all bus cycles are issued with LOCK# pin negated, except
  8869.         page tables access and INTA cycles.
  8870. 3        Reserved
  8871. 2    SMAC    (System Managment Memory Access)
  8872.         If =1 Any access within SMM memory space issued with SMAADS#
  8873.         output active, SMI# ignored
  8874.         =0 No affects on access
  8875. 1    SMI    (Enable SMM pins)
  8876.         If =1 then enable SMI# i/o pin and SMADS# output pin
  8877.         =0 Float it
  8878. 0        Reserved
  8879.  
  8880. CCR2:
  8881. Bit    Name    Description
  8882. 7    SUSP    (Enable Suspend pins)
  8883.         If =1 SUSP# input and SUSPA# output pins enabled
  8884.         =0 Float
  8885. 6..5        Reserved
  8886. 4    WPR1    (Write-Protected Region 1)
  8887.         If =1 then any cachable accesses in the 640KB-1MB region
  8888.         are Write-Protected
  8889. 3    HALT    (Suspend on HALT)
  8890.         If =1 CPU enters suspend mode following execution
  8891.         HLT instruction.
  8892. 2    LOCK_NW (Lock NW bit)
  8893.         If =1 Prohibits changing the state of NW bit in CR0
  8894. 1    SADS
  8895.         If =1 CPU insert an idle cyce following the BRDY# and idle
  8896.         cycle prior to asserting ADS#
  8897. 0        Reserved
  8898.  
  8899. CCR3:
  8900. Bit    Name    Description
  8901. 7..4    MAPEN(3-0) (Register Mapping Enable)
  8902.         If set to 0001b all register accessible,
  8903.         else 0000h then accessed only (C0h-CFh,FEh,FFh)
  8904. 3        Reserved
  8905. 2    LINBRST
  8906.         If =1, CPU will use linear address sequence when performing
  8907.         burst cycle, If =0 CPU will used 1+4 address sequence.
  8908. 1    NMIEN    (NMI Enable)
  8909.         If =1 then NMI enable during SMM
  8910.         If =0 NMI don't recognizing during SMM
  8911. 0      SMI_LOCK (SMM Register Lock)
  8912.         If =1 the following SMM control bits can not
  8913.         be modified:
  8914.              CCR1: bits 1,2,3
  8915.              CCR3: bit 1
  8916.              CCR6: bits 6,1,0
  8917.              ARR3: Starting address and Block size
  8918.         But this bit may be changed in SMM.
  8919.         This bit (SMI_LOCK) clearing RESET only.
  8920.  
  8921. ARRi:
  8922.     -- Starting Address --- Region
  8923. ARR #    A31-A24    A23-A16    A15-A12 Block Size
  8924.      7..0     7..0      7..4     3..0        (Bits)
  8925. ARR0      C4h      C5h       C6h      C6h        (Index)
  8926. ARR1      C7h      C8h       C9h      C9h
  8927. ARR2      CAh      CBh       CCh      CCh
  8928. ARR3      CDh      CEh       CFh      CFh
  8929. ARR4      D0h      D1h       D2h      D2h
  8930. ARR5      D3h      D4h       D5h      D5h
  8931. ARR6      D6h      D7h       D8h      D8h
  8932. ARR7      D9h      DAh       DBh      DBh
  8933.     (ARRi^)
  8934.     (index)
  8935.  
  8936. (Index    ARRi+0)
  8937. Bit    Description
  8938. 7..0    A31..A24 bits of starting adress of region #i
  8939. (Index    ARRi+1)
  8940. Bit    Description
  8941. 7..0    A23..A16 bits of starting adress of region #i
  8942. (Index ARRi+2)
  8943. Bit    Description
  8944. 7..4    A15..A12 bits of starting adress of region #i
  8945. 3..0    Size of     region #i :
  8946.     Value    ARR0-ARR6    ARR7
  8947.     0000    **** region disabled ****
  8948.     0001    4K        256K
  8949.     0010    8K        512K
  8950.     0011    16K        1M
  8951.     0100    32K        2M
  8952.     0101    64K        4M
  8953.     0110    128K        8M
  8954.     0111    256K        16M
  8955.     1000    512K        32M
  8956.     1001    1M        64M
  8957.     1010    2M        128M
  8958.     1011    4M        256M
  8959.     1100    8M        512M
  8960.     1101    16M        1G
  8961.     1110    32M        2G
  8962.     1111    4G        4G
  8963.  
  8964. RCRi:
  8965. Bit    Name    ARR#    Description
  8966. 7        any    Reserved
  8967. 6    INV_RGN    0..6    If =1, then all memory outside specific memory region
  8968.             treated as RCR flags for this region
  8969.             (Inversion)
  8970. 5        any    Reserved
  8971. 4    WT    any    If =1 Write-Throught caching is enable for region
  8972. 3    WG    any    If =1 Write Gathering enabled for region
  8973. 2    WL    any    If =1 Weak Locking enable for region
  8974. 1        any    Reserved
  8975. 0    CD    any    If =1 address region is non-cachable
  8976.  
  8977. CCR4:
  8978. Bit    Name    Description
  8979. 7    CPUIDEN    (Enable CPUID instruction)
  8980.         If =1 bit 21 of EFLAGS (ID) may changed, and CPUID instruction
  8981.         enabled,
  8982.         else bit 21 of EFLAGS =0 forever and CPUID caused INT 6 -
  8983.         Invalid Opcode
  8984. 6..3        Reserved
  8985. 2..0    IORT[2..0]
  8986.         Specify minimum number of bus clocks between two I/O
  8987.         accesses (I/O recovery time)
  8988.         000    -    1 clk
  8989.         001    -    2 clk
  8990.         010    -    4 clk
  8991.         011    -    8 clk
  8992.         100    -    16 clk
  8993.         101    -    32 clk    (Default Value)
  8994.         110    -    64 clk
  8995.         111    -    no delay
  8996.         Note: 6x86 (M1), 000 - no delay, 111 - 128 clk
  8997.  
  8998. CCR5:
  8999. Bit    Name    Description
  9000. 7..6        Reserved
  9001. 5    ARREN    (Address region registers Enable)
  9002.         If =1 then Enable all ARRs,
  9003.         If =0 all ARRs disable, but if SM3=1 then ARR3 enable.
  9004. 4..1        Reserved
  9005. 0    WT_ALLOC
  9006.         If =1 new cache lines allocated for both read misses and
  9007.         write misses, else only on read misses.
  9008.  
  9009. CCR6:
  9010. Bit    Name    Description
  9011. 7        Reserved
  9012. 6    N    (Nested SMI Enable bit)
  9013.         If =1 enable nesting of SMI
  9014.         If = 0 disabled.
  9015.         (This bit automatically cleared when entered every SMI routine)
  9016. 5..2        Reserved
  9017. 1    WP_ARR3     (Write Protected Memory Region # 3)
  9018.         if =1 Memory region defined by ARR3 is write-protected,
  9019.         when operating outside SMM mode
  9020. 0    SMM_MODE  (SMM Mode)
  9021.         if = 1 Enable Cyrix Enhanced SMM
  9022.         if = 0 Disable Cyrix Enhanced SMM
  9023.  
  9024. DIR0:
  9025. Bit    Description
  9026. 7..0    (Device Identification)
  9027.     Value        Description    Core/Bus clk
  9028.     5xh        6x86MX        (see APPENDIX B for more details)
  9029.  
  9030. DIR1:
  9031. Bit    Name    Description
  9032. 7..4    SID    Stepping Identificator
  9033. 3..0    RID    Revision Identification
  9034.  
  9035. see Appendix A1 for more info about identification
  9036.  
  9037. Note: Try to test some Undocument Registers from Cx6x86.
  9038.  
  9039. ----------------------------------------------
  9040. APPENDIX    B
  9041. Codes which returned after Reset in EDX
  9042.  
  9043.                   DH     DL
  9044. Type of CPU   Steppin       Model ID   Revision
  9045.   ------------------------------------------------------------
  9046. i386DX        A         (00h)    ???    :Early Models
  9047.         B0-B10          03h    03h
  9048.                     04h    :???
  9049.         D0            05h
  9050.         D1-D2            08h
  9051.         E0,E1,F0        08h
  9052.   ------------------------------------------------------------
  9053. Am386DX/DXL    A          03h    05h
  9054.         B            08h
  9055.   ------------------------------------------------------------
  9056. i386SX        A0          23h    04h
  9057.         B            05h
  9058.         C,D,E            08h
  9059.   ------------------------------------------------------------
  9060. Am386SX/SXL    A1          23h    05h
  9061.         B            08h
  9062.   ------------------------------------------------------------
  9063. Intel386CXSA    A          23h    09h
  9064.   ------------------------------------------------------------
  9065. Intel386CXSB    A          23h    09h
  9066.   ------------------------------------------------------------
  9067. i386EX        A          23h    09h
  9068.   ------------------------------------------------------------
  9069. Intel386SXSA    ?          23h    09h
  9070.   ------------------------------------------------------------
  9071. i376        A0          33h    05h
  9072.         B            08h
  9073.   ------------------------------------------------------------
  9074. i386SL        A0-A3          43h    0xh (05H)
  9075.         B0-B1            1xh
  9076.   ------------------------------------------------------------
  9077. RapidCAD (tm)    A          03h    40h
  9078.         B            41h
  9079.   ------------------------------------------------------------
  9080. IBM 386SLC    A          A3h    xxh
  9081.   ------------------------------------------------------------
  9082. Cx486SLC    A          04h    10h
  9083.   ------------------------------------------------------------
  9084. TI486SLC/DLC/e    A          04h    10h
  9085.         B            11h
  9086.   ------------------------------------------------------------
  9087. TI486SXL/SXLC    A          04h    10h
  9088.         B            11h
  9089.   ------------------------------------------------------------
  9090. i486DX        A0/A1          04h    00h
  9091.         B2-B6            01h
  9092.         C0            02h
  9093.         C1            03h
  9094.         D0            04h
  9095.         cA2,cA3            10h
  9096.         cB0,cB1            11h
  9097.         cC0            13h
  9098.         aA0,aA1            14h    : SL Enhanced
  9099.         aB0            15h    : SL Enhanced
  9100.   ------------------------------------------------------------
  9101. Am486DX        any          04h    12h
  9102.   ------------------------------------------------------------
  9103. UMC U5SD    any          04h    1xh
  9104.   ------------------------------------------------------------
  9105. i486SX        A0          04h    20h
  9106.         B0            22h
  9107.         bBx            23h    : SL Enhanced
  9108.         gAx            24h
  9109.         cA0            27h
  9110.         cB0            28h
  9111.         aA0,aA1            2Ah    : SL Enhanced
  9112.         aB0,aC0            2Bh    : SL Enhanced
  9113.   ------------------------------------------------------------
  9114. i487SX        A0          04h    20h
  9115.         B0            21h
  9116.   ------------------------------------------------------------
  9117. UMC U5S        any          04h    23h
  9118.   ------------------------------------------------------------
  9119. UMC U5SX 486-A    any          04h    23h
  9120.   ------------------------------------------------------------
  9121. UMC U5SD              04h    23h
  9122.   ------------------------------------------------------------
  9123. Cx5x86        0,rev 1-      04h    29h    : core/bus clk=2/1  +clones
  9124.                     2Bh    : core/bus clk=2/1  +clones
  9125.                     2Dh    : core/bus clk=3/1  +clones
  9126.                     2Fh    : core/bus clk=3/1  +clones
  9127.   ------------------------------------------------------------
  9128. i486DX2    &    A0-A2          04h    32h
  9129. OverDrive (tm)    B1            33h
  9130.         aA0,aA1            34h    : SL Enhanced
  9131.         aB0,aC0            35h    : SL Enhanced
  9132.   ------------------------------------------------------------
  9133. Am486DX2    any          04h    32h    : 66 and 80 MHz
  9134.   ------------------------------------------------------------
  9135. Am486DXL2    any          04h    32h
  9136.   ------------------------------------------------------------
  9137. Am486DX4    any          04h    32h    : Original
  9138.         any          04h    84h    : Enhanced in WT mode
  9139.                   04h    94h    : Enhanced in WB mode
  9140.   ------------------------------------------------------------
  9141. UMC U486DX2    any          04h    3xh    : ???
  9142.   ------------------------------------------------------------
  9143. UMC U486SX2    any          04h    5xh    : ???
  9144.   ------------------------------------------------------------
  9145. i486SL        A          04h    40h
  9146.         ??            41h
  9147.   ------------------------------------------------------------
  9148. i486SX2        aC0          04h    5Bh    : SL Enhanced
  9149.   ------------------------------------------------------------
  9150. IntelSX2 (tm)    A          04h    5xh
  9151. OverDrive (tm)
  9152.   ------------------------------------------------------------
  9153. WB Enh IntelDX2    A          04h    70h    : in WB mode
  9154. (P24D)                    36h    : in WT mode
  9155.   ------------------------------------------------------------
  9156. IBM BL486DX2    A          04h    80h
  9157.   ------------------------------------------------------------
  9158. IntelDX4 (tm)    A          04h    80h
  9159.   ------------------------------------------------------------
  9160. TI  TI486DX2    any          04h    80h
  9161.   ------------------------------------------------------------
  9162. TI  TI486DX4    any          04h    81h
  9163.   ------------------------------------------------------------
  9164. IntelDX4 (tm)    A          14h    80h    : DX4ODPR  (5V IntelDX4)
  9165. OverDrive (tm)
  9166.   ------------------------------------------------------------
  9167. Cx5x86        0,rev 2+      04h    90h
  9168.   ------------------------------------------------------------
  9169. Write-Back Enh. A          04h    83h    : WT Mode
  9170. IntelDX4 (tm)                90h    : WB mode
  9171.   ------------------------------------------------------------
  9172. AMD Am5x86    A          04h    84h    : x3, WT mode
  9173.                     94h    : x3, WB mode
  9174.                     E4h    : x4, WT mode
  9175.                     F4h    : x4, WB mode
  9176.   ------------------------------------------------------------
  9177. IBM  486SLC    A          A4h    0xh
  9178.   ------------------------------------------------------------
  9179. IBM  486SLC2    Ax          A4h    1xh
  9180.         Bx            2xh
  9181.         ??            3xh
  9182.   ------------------------------------------------------------
  9183. IBM  486BLX3    A          84h    xxh
  9184.   ------------------------------------------------------------
  9185. Cyrix M5    all          00h    05h
  9186. (Cx486S/D)
  9187.   ------------------------------------------------------------
  9188. Cyrix M6    all          00h    06h
  9189. (Cx486DX)
  9190.   ------------------------------------------------------------
  9191. Cyrix M7    all          00h    07h
  9192. (Cx486DX2)
  9193.   ------------------------------------------------------------
  9194. Cyrix M8    all          00h    08h
  9195. (Cx486DX4)
  9196.   ------------------------------------------------------------
  9197. Am5k86 (SSA/5)    all          05h    0xh
  9198.         E          05h    00h
  9199.         F            01h
  9200.   ------------------------------------------------------------
  9201. Am5k86 (K5)    all          05h    1xh    : (x1.5)
  9202.                   05h    2xh    : (x1.75)
  9203.                     24h
  9204.                   05h    3xh    : (x2)
  9205.   ------------------------------------------------------------
  9206. AMD-K6                  05h    6xh
  9207.                     61h    ; PR2
  9208.                     7xh
  9209.   ------------------------------------------------------------
  9210. AMD-K6 3D              05h    8xh
  9211.   ------------------------------------------------------------
  9212. AMD-K6 3D+              05h    9xh
  9213.   ------------------------------------------------------------
  9214. Pentium (P5)    Ax          05h    0xh    : (FPU bug)
  9215.         B1          05h    13h    : (FPU bug)
  9216.         B2          05h    14h    : (FPU bug)
  9217.         C1          05h    15h    : (FPU bug)
  9218.         D1          05h    17h
  9219.   ------------------------------------------------------------
  9220. Pentium (P54C)    B1          05h    21h    : (FPU bug)
  9221. (P54CS)        B3          05h    22h    : (FPU bug)
  9222. (P54CSQ)    B5          05h    24h    : (FPU bug)
  9223.         C1          05h    25h
  9224.         C2            25h
  9225.         E0            26h    : 75,90,100,120      MHz
  9226.         cB1            2Bh    : 120,133      MHz
  9227.         cC0            2Ch    : 133,150,166,200 MHz
  9228.   ------------------------------------------------------------
  9229. Pentium        mA1          05h    25h
  9230. (P54LM)        mcB1            2Bh
  9231. (Mobile)    mcC0            2Ch
  9232. (Vcc=2.9V)    mA4            70h
  9233.   ------------------------------------------------------------
  9234. Pentium Overdrive B1          15h    31h    : PODP5V63, PODP5V83
  9235. (Vcc=5V)(P24T)      B2          15h    31h    : (Socket 3,6)
  9236.           C0          15h    32h
  9237.   ------------------------------------------------------------
  9238. Pentium OverDrive tA0          05h    1Ah    : PODP5V120, PODP5V133
  9239. (P5T)                        : (Socket 4)
  9240.   ------------------------------------------------------------
  9241. Pentium OverDrive aC0          05h    2Ch    : PODP3V125, PODP3V150
  9242. (P54T)                        : PODP3V166
  9243.                         : (Socket 5,7)
  9244.   ------------------------------------------------------------
  9245. NexGen Nx586              05h    0xh
  9246.                     04h    : 120 MHz
  9247.                     06h    : 133 MHz
  9248.   ------------------------------------------------------------
  9249. Cx6x86                  05h    2xh    : early models
  9250. (M1)                    30h    : core/bus = 1/1
  9251.                     32h    : core/bus = 1/1
  9252.                     31h    : core/bus = 2/1
  9253.                     33h    : core/bus = 2/1
  9254.                     34h    : core/bus = 3/1
  9255.                     36h    : core/bus = 3/1
  9256.                     35h    : core/bus = 4/1
  9257.                     37h    : core/bus = 4/1
  9258.   ------------------------------------------------------------
  9259. Pentium w/MMX         A1          05h    41h
  9260. (P55C)             A2            42h
  9261.              xB1/mxB1        43h
  9262.              xA3/mxA3        44h
  9263.              myA0        81h
  9264.  ------------------------------------------------------------
  9265. Pentium MMX         oxA3     15h    44h
  9266. OverDrive (P55CTP)
  9267.   ------------------------------------------------------------
  9268. Cyrix MediaGX              05h    4xh
  9269.   ------------------------------------------------------------
  9270. Cyrix MediaGX              05h    4xh
  9271. MMX Enhanced
  9272.   ------------------------------------------------------------
  9273. IDT Winchip C6              05h    40h
  9274.   ------------------------------------------------------------
  9275. Cx6x86MX              06h    51h    : core/bus = 2/1
  9276. (M2)                  06h    53h    : core/bus = 3/1
  9277.                   06h    54h    : core/bus = 3.5/1
  9278.                   06h    55h    : core/bus = 2.5/1
  9279.                   06h    59h    : core/bus = 2/1
  9280.                   06h    5Ah    : core/bus = 2.5/1
  9281.                   06h    5Bh    : core/bus = 3/1
  9282.                   06h    5Ch    : core/bus = 3.5/1
  9283.   ------------------------------------------------------------
  9284. Intel Pentium OverDrive          25h    2xh    : will be Set as second CPU
  9285. (P54M)
  9286.   ------------------------------------------------------------
  9287. Pentium     Pro (P6)          06h    0xh ; Engineering Sample 133MHz 0.6mkm
  9288.                   06h    11h ; Engineering Sample 150MHz
  9289.             B0          06h    11h ;    150 MHz
  9290.             C0          06h    12h ;    150 MHz
  9291.             sA0          06h    16h ;    166,180,200 MHz
  9292.             sA1          06h    17h ;    166,180,200 MHz
  9293.             sB1          06h    19h ;    166,180,200 MHz
  9294.   ------------------------------------------------------------
  9295. Pentium II        C0          06h    33h
  9296.             C1          06h    34h
  9297. (P6L,Klamath) dA0/mdA0/mmdA0  06h    50h
  9298.             dA1          06h    51h
  9299.           dB0/mdB0/mmdB0  06h    52h
  9300.            mdB0          06h    52h
  9301.           mmdB0            52h
  9302.   ------------------------------------------------------------
  9303. OverDrive for              16h    3xh
  9304. Socket 8  (P6T)
  9305.   ------------------------------------------------------------
  9306. Pentium II Xeon        B0           06h    52h
  9307.   ------------------------------------------------------------
  9308. Celeron            dA0           06h    50h
  9309.             dA1           06h    51h
  9310.             dB0           06h    52h
  9311.             mA0           06h    60h    (128KB cache)
  9312.   ------------------------------------------------------------
  9313. Pentium II        TdB0       16h    32h
  9314. Overdrive
  9315.   ------------------------------------------------------------
  9316.  
  9317. Note: For detection Cyrix's chips refer to APPENDIX A1.
  9318. Note: Then Intel Pentium and higher chips, sometimes include build-in APIC
  9319.       and setup such chips on motherbard as second CPU, change id code
  9320.       from 0xxxh to 2xxxh.
  9321.  
  9322. --------------------------------------------
  9323. APPENDIX C0
  9324. iCOMP index for Intel's Microprocessors
  9325.  
  9326. i386SX-20        32
  9327. i386SX-25        39
  9328. i386SL-25        41
  9329. i386DX-25        49
  9330. i386DX-33        68
  9331. i486SX-20        78
  9332. i486SX-25        100  ; Base model for test iCOMP=100 by define
  9333. i486DX-25        122
  9334. i486SX-33        136
  9335. i486DX-33        166
  9336. i486DX2-20/40        166
  9337. IntelSX2-25/50        180
  9338. i486DX2-25/50        231
  9339. i486DX-50        249
  9340. IntelDX4-20/60        258
  9341. i486DX2-33/66        297
  9342. Pentium OverDrive-20/50 314  ; P24T
  9343. IntelDX4-25/75        319  ; P24C
  9344. IntelDX4-33/100        435  ; P24C
  9345. Pentium OverDrive-25/63    443  ; P24T
  9346. Pentium-(510\60)    510  ; P5
  9347. Pentium-(567\66)    567  ; P5
  9348. Pentium OverDrive-33/83 581  ; P24T
  9349. Pentium-(610\75)    610  ; P54C,P54LM
  9350. Pentium-(735\90)    735  ; P54C,P54LM
  9351. Pentium-(815\100)    815  ; P54C
  9352. Pentium-(1000\120)    1000 ; P54CSQ
  9353. Pentium-(133)        1110 ; P54CSQ
  9354.  
  9355. iCOMP index 2.0 for Intel Microprocessors
  9356.  
  9357. Pentium-75        67
  9358. Pentium-90        81
  9359. Pentium-100        90
  9360. Pentium-120        100    ; Base Model iCOMP 2.0 = 100
  9361. Pentium-133        111
  9362. Pentium-150        114
  9363. Pentium-166        127
  9364. Pentium-200        142
  9365. Pentium w/MMX-166    160
  9366. Pentium Pro-150        168
  9367. Pentium w/MMX-200    182
  9368. Pentium Pro-180        197
  9369. Pentium w/MMX-233    203
  9370. Pentium Pro-200        220
  9371. Pentium II-233        267
  9372. Pentium II-266        303
  9373.  
  9374. ----------------------------------------------
  9375. APPENDIX C1
  9376. Cyrix Microprocessors Relative Perfomance
  9377.  
  9378. Cyrix Inc. Used for declaration of perfomance of
  9379. theys microprocessors tests based on PC Bench 8.0
  9380. and normalization.
  9381.  
  9382. CPU        Perfomance Scores
  9383. Cx486SLC-25    36
  9384. Cx486SLC-33    39
  9385. Cx486SLC2-50    40
  9386. Cx486DLC-33    69
  9387. Cx486DLC-40    83
  9388. Cx486DX-33    100    ; <--- Base Point
  9389. Cx486DX-40    118
  9390. Cx486DX2-50    139
  9391. Cx486DX-50    148
  9392. Cx486DX2-66    179
  9393. Cx486DX2-V80    209
  9394.  
  9395. ----------------------------------------------
  9396. APPENDIX C2
  9397.  
  9398. CPU's perfomance
  9399.  
  9400. Note: Data was get on different M/B and configurations, so treat this
  9401. tables like simple numbers, which said perfomance is xxx +-10%.
  9402.  
  9403.             CPUMark 32    CPUMark 16    P-rating
  9404. AMD Am5k86-75  (SSA/5)    154
  9405. AMD Am5k86-90  (SSA/5)    187
  9406. AMD Am5k86-100 (SSA/5)    208
  9407. AMD Am5k86-133 (K5)    271        247
  9408. AMD Am5k86-166 (K5)    306        303
  9409.  
  9410. Pentium-75        174        168
  9411. Pentium-90        210        201
  9412. Pentium-100        233        223
  9413. Pentium-120        257        247
  9414. Pentium-133        283        278
  9415. Pentium-150        286        296
  9416. Pentium-166        321        326
  9417. Pentium-200        358
  9418.  
  9419. Cyrix Cx6x86-P120+    235        247
  9420. Cyrix Cx6x86-P133+    260
  9421. Cyrix Cx6x86-P150+    283        298
  9422. Cyrix Cx6x86-P166+    316        329
  9423. Cyrix Cx6x86-P200+    350        340
  9424.  
  9425. Pentium w/MMX-166    378        380
  9426. Pentium w/MMX-200    425        429
  9427.  
  9428. Pentium Pro-150-256    420
  9429. Pentium Pro-180-256    493
  9430. Pentium Pro-200-256    540        358
  9431. Pentium Pro-200-512    610
  9432.  
  9433. AMD Am6k86-200        520        427
  9434.  
  9435. Pentium II-233        632        468
  9436. Pentium II-266        721        536
  9437. Pentium II-300        813        603
  9438.  
  9439. ------------------------------------------------
  9440. APPENDIX D0
  9441. Pentium P54C+ Build-in APIC
  9442. (Advanced programmable Interrupt Controller)
  9443.  
  9444. Base Address of Build-in APIC in memory location
  9445. is 0FEE00000H.
  9446.  
  9447. Map of APIC REgisters:
  9448.  
  9449. Offset (hex)    Description            Read/Write state
  9450. 0        Reserved
  9451. 10        Reserved
  9452. 20        Local APIC ID            R/W
  9453. 30        Local APIC Version        R
  9454. 40-70        Reserved
  9455. 80        Task Priority Register        R/W
  9456. 90        Arbitration Priority Register    R
  9457. A0        Processor Priority Register    R
  9458. B0        EOI Register            W
  9459. C0        Remote read            R
  9460. D0        Logical Destination        R/W
  9461. E0        Destination Format Register    0..27  R
  9462.                         28..31 R/W
  9463. F0        Spurious Interrupt Vector Reg.    0..3   R
  9464.                         4..9   R/W
  9465. 100-170        ISR  0-255            R
  9466. 180-1F0        TMR  0-255            R
  9467. 200-270        IRR  0-255            R
  9468. 280        Error Status Register        R
  9469. 290-2F0        Reserved
  9470. 300        Interrupt Command Reg. (0-31)    R/W
  9471. 310        Interrupt Command Reg. (32-63)    R/W
  9472. 320        Local Vector Table (Timer)    R/W
  9473. 330-340        Reserved
  9474. 350        Local Vector Table (LINT0)    R/W
  9475. 360        Local Vector Table (LINT1)    R/W
  9476. 370        Local Vector Table (ERROR)    R/W
  9477. 380        Initial Count Reg. for Timer    R/W
  9478. 390        Current Count of Timer        R
  9479. 3A0-3D0        Reserved
  9480. 3E0        Timer Divide Configuration Reg.    R/W
  9481. 3F0        Reserved
  9482.  
  9483. Note: Pentium-120MHz (Step C2)    Never have APIC
  9484.  
  9485. ---------------------------------------------------
  9486. APPENDIX D1   INTEL 386/486SL REGISTERS
  9487.  
  9488. Note: Intel Chipset for SL microprocessors (i386SL,i486SL) contain
  9489.       self CPU and 82360SL chip.
  9490.  
  9491. [i386SL]
  9492. Note: address of register in Normal I/O space
  9493.  
  9494. Name of Register    Address        Default Value    Where placed    Size
  9495. CPUPWRMODE        22h        0        CPU        16
  9496. CFGSTAT            23h        0        82360SL        8
  9497. CFGINDEX        24h        0        82360SL        16
  9498. CFGDATA            25h        xxh        82360SL        16
  9499. EMSCNTLREG        28h        0        CPU        8
  9500. EMSINDEXREG        2Ah        0        CPU        16
  9501. EMSDPREG        2Ch        xxh        CPU        16
  9502. PORT92            92h        0        CPU        8
  9503. PORT102               102h        0        CPU        8
  9504. FAIL SAFE NMI CTRL     461h        0        CPU        8
  9505. The followed ports visible only when they enabled,
  9506. Any writes to this ports caused the action it named.
  9507. FAST CPU RESET           EFh        N/A        82360SL        8
  9508. FAST A20 GATE           EEh        N/A        82360SL        8
  9509. SLOW CPU           F4h        N/A        CPU        8
  9510. FAST CPU           F5h        N/A        CPU        8
  9511. SFS DISABLE           F9h        N/A        CPU        8
  9512. SFS ENABLE           FBh        N/A        CPU        8
  9513.  
  9514. Format of CPUPWRMODE register (i386SL):
  9515. Bits    Name    Description    (Table )
  9516. 15    DT    If Unlock Status {  // See bit 0 of this register
  9517.             if bit=0 then access to 82360SL
  9518.             if bit=1 then access to CPUPWRMODE register
  9519.                 }
  9520.         If Lock Staus    {   // i.e.SB=1
  9521.             (De-Turbo Select Bit) Selected clock speed
  9522.             If bit=0 then EFI/2
  9523.             If bit=1 then EFI/4
  9524.                 }
  9525. 14    0    Reserved
  9526. 13..11    IMCPC    (Idle MCP Clock)
  9527.         13.12.11    Description
  9528.         000    EFI
  9529.         001    EFI/2
  9530.         010    EFI/4
  9531.         011    EFI/8
  9532.         100    EFI/16
  9533.         101    Reserved
  9534.         110    Reserved
  9535.         111    Stop Clock
  9536. 10,9    SLC    (Slow CPU clock)
  9537.         10.9    Description
  9538.         00    EFI
  9539.         01    EFI/2
  9540.         10    EFI/4
  9541.         11    EFI?8
  9542. 8    CPUCNFG
  9543.         If =1 CPU Lock. (Write Protect to CPUPMODE register)
  9544. 7    FD    (Flash Disk Enable)
  9545.         If bit=1 then phisical addresses D0000H - DFFFFh
  9546.         automatically never caching.
  9547. 6    0    Reserved
  9548. 5,4    FCC    (Fast CPU clock)
  9549.         5.4    Description
  9550.         00    EFI
  9551.         01    EFI/2
  9552.         10    EFI/4
  9553.         11    EFI/8
  9554. 3,2    US    (Unit Select)
  9555.         Select Unit of 82360SL which will be accessable through 23h-25h
  9556.         I/O Ports
  9557.         3.2    Description
  9558.         00    On-Board Memory Controller
  9559.         01    Cache Unit
  9560.         10    Internal Bus Unit
  9561.         11    External Bus Unit
  9562. 1    UE    (Unit Enable)
  9563.         If =1 Enable to Access Units
  9564.         else enable to access System bus.
  9565. 0    SB    (Status Bit)
  9566.         If =0 Enable access to CPUPWRMODE register
  9567.         If =1 Disable
  9568.  
  9569. Format of EMSCNTLREG:
  9570. Bits    Description    (Table )
  9571. 7    (Global Enable)
  9572.     If =1 EMS enable
  9573. 6    Valid bit
  9574. 5    EMSDP Status Bit (Read Only)
  9575. 4..2    Reserved
  9576. 1..0    Active EMS Set (0-3)
  9577.  
  9578. Format of EMSINDEXREG:
  9579. Bits    Description    (Table )
  9580. 15..10    Reserved
  9581. 9..8    EMS set (0-3)
  9582. 7..6    Reserved
  9583. 5..0    EMS Page Register Index (0-64)
  9584.  
  9585. Format of EMSDPREG:
  9586. Bits    Description    (Table )
  9587. 15    This EMS Page Enable (i.e. page indexed by EMSINDEXREG)
  9588. 14    EMS Valid bit
  9589. 13..11    reserved
  9590. 10..0    Address lines A24..A14 for page selected by EMSINDEXREG
  9591.  
  9592. Important Note:
  9593. i386SL have SIGNATURE register have index 30Eh in On-Board Memory Controller
  9594. Configuration Space. This Register contain  Stepping Info of i386SL.
  9595. Stepping    Signature Register    DX register after reset
  9596. A0        4300h            4310h
  9597. A1        4300h            4310h
  9598. A2        4301h            4310h
  9599. A3        4302h            4310h
  9600. B0        4310h            4311h
  9601. B1        4311h            4311h
  9602.  
  9603. [i486SL]
  9604. Note: address of register in Normal I/O space
  9605.  
  9606. Name of Register    Address        Default Value    Where placed    Size
  9607. CPUPWRMODE        22h        100H        CPU        16
  9608. CFGSTAT            23h        0        82360SL        8
  9609. CFGINDEX        24h        0        82360SL        16
  9610. CFGDATA            25h        xxh        82360SL        16
  9611. PORT92            92h        0        CPU        8
  9612. PORT102               102h        0        CPU        8
  9613. FAIL SAFE NMI CTRL     461h        0        CPU        8
  9614. The followed ports visible only when they enabled
  9615. FAST CPU RESET           EFh        N/A        82360SL        8
  9616. FAST A20 GATE           EEh        N/A        82360SL        8
  9617. SLOW CPU           F4h        N/A        CPU        8
  9618. FAST CPU           F5h        N/A        CPU        8
  9619. SFS DISABLE           F9h        N/A        CPU        8
  9620. SFS ENABLE           FBh        N/A        CPU        8
  9621.  
  9622. Format of CPUPWRMODE register (i486SL):
  9623. Bits    Name    Description    (Table )
  9624. 15    DT    If Unlock Status {  // See bit 0 of this register
  9625.             if bit=0 then access to 82360SL
  9626.             if bit=1 then access to CPUPWRMODE register
  9627.                 }
  9628.         If Lock Staus    {   // i.e.SB=1
  9629.             (De-Turbo Select Bit) Selected clock speed
  9630.             If bit=0 then EFI/2
  9631.             If bit=1 then EFI/4
  9632.                 }
  9633. 14..13    0    Reserved
  9634. 12    FPUERROR
  9635.         This bit controlled access to I/O port 0F0h,
  9636.         if =0 then access to internal F0h port,
  9637.         If =1 then access ISA bus.
  9638. 11..9    0    Reserved
  9639. 8    CPUCNFG
  9640.         If =1 CPU Lock. (Write Protect to CPUPMODE register)
  9641. 7    0    RESERVED
  9642. 6,5    FCC    (Fast CPU clock)
  9643.         5.4    Description
  9644.         00    CPUCLK=definition=EFI/2
  9645.         01    CPUCLK/2
  9646.         10    CPUCLK/4
  9647.         11    CPUCLK/8
  9648. 4    0    Reserved
  9649. 3,2    US    (Unit Select)
  9650.         Select Unit of 82360SL which will be accessable through 23h-25h
  9651.         I/O Ports
  9652.         3.2    Description
  9653.         00    On-Board Memory Controller
  9654.         01    Reserved
  9655.         10    Internal Bus Unit
  9656.         11    External Bus Unit
  9657. 1    UE    (Unit Enable)
  9658.         If =1 Enable to Access Units
  9659.         else enable to access System bus.
  9660. 0    SB    (Status Bit)
  9661.         If =0 Enable access to CPUPWRMODE register
  9662.         If =1 Disable
  9663.  
  9664. Important Note:
  9665. i486SL have SIGNATURE register have index 70Ah in On-Board Memory Controller
  9666. Configuration Space. This Register contain  Stepping Info of i486SL.
  9667. Format Of this register provided below:
  9668. Bits    Description
  9669. 15..12    Member of Family (4h - SL)
  9670. 11..8    Family    (4h - 486 family)
  9671. 7..0    Revision Name (Not Same as in DX after reset)
  9672.  
  9673. ---------------------------------------------
  9674. APPENDIX E
  9675. Pentium (tm) Processor Pairing Instruction
  9676.  
  9677. Pentium (tm) is superscalar microprocessor
  9678. i.e. it may execute >1 instruction per CLK
  9679. cycle. It may execute maximum 2 instruction
  9680. per cycle.It have two integer pipes to execute
  9681. instruction. This pipes not same, and some
  9682. instruction may pairing (i.e. execute together)
  9683. (only if not link with this 2 instruction)
  9684. only in U pipe, some other only in V pipe, other
  9685. in any pipe,other absolutely not pairing and they
  9686. executed on U pipe only.
  9687.  
  9688. ------ Integer Part
  9689.  
  9690. Note:
  9691.     PU - is pairable if issued to U pipe
  9692.     PV - is pairable if issued to V pipe
  9693.     UV - pairable in either pipe
  9694.  
  9695. ADC    Reg,Reg        PU
  9696.     Reg,Mem        PU
  9697.     Reg,Imm        PU
  9698.     Mem,Reg        PU
  9699.     Mem,Imm        PU
  9700. ADD    Reg,Reg        UV
  9701.     Reg,Mem        UV
  9702.     Reg,Imm        UV
  9703.     Mem,Reg        UV
  9704.     Mem,Imm        UV
  9705. AND    Reg,Reg        UV
  9706.     Reg,Mem        UV
  9707.     Reg,Imm        UV
  9708.     Mem,Reg        UV
  9709.     Mem,Imm        UV
  9710. CALL    direct        PV
  9711. CMP    Reg,Reg        UV
  9712.     Reg,Mem        UV
  9713.     Reg,Imm        UV
  9714.     Mem,Reg        UV
  9715.     Mem,Imm        UV
  9716. DEC    Reg        UV
  9717.     Mem        UV
  9718. INC    Reg        UV
  9719.     Mem        UV
  9720. Jcc    any        PV
  9721. JMP    Short        PV
  9722.     Direct        PV
  9723. LEA    Reg,Mem        UV
  9724. MOV    Reg,Reg/Mem/Imm    UV
  9725.     Mem,Reg        UV
  9726. NOP            UV
  9727. OR    Reg,Reg        UV
  9728.     Reg,Mem        UV
  9729.     Reg,Imm        UV
  9730.     Mem,Reg        UV
  9731.     Mem,Imm        UV
  9732. POP    Reg        UV
  9733. PUSH    Reg        UV
  9734.     Imm        UV
  9735. Rotates/Shifts:
  9736.     Reg,1        PU
  9737.     Mem,1        PU
  9738.     Reg,Imm        PU
  9739.     Mem,Imm        PU
  9740. SUB    Reg,Reg        UV
  9741.     Reg,Mem        UV
  9742.     Reg,Imm        UV
  9743.     Mem,Reg        UV
  9744.     Mem,Imm        UV
  9745. TEST    Reg,Reg        UV
  9746.     Mem,Reg        UV
  9747.     Acc,Imm        UV
  9748. XOR    Reg,Reg        UV
  9749.     Reg,Mem        UV
  9750.     Reg,Imm        UV
  9751.     Mem,Reg        UV
  9752.     Mem,Imm        UV
  9753.  
  9754.  _____    Floating Part
  9755.  
  9756. Note:    FX  -  Pairing with FXCH
  9757.     (All other never pairing)
  9758.  
  9759. FABS            FX
  9760. FADD            FX
  9761. FADDP            FX
  9762. FCHS            FX
  9763. FCOM            FX
  9764. FCOMP            FX
  9765. FDIV/R/P/RP        FX
  9766. FLD   m32,m64,ST(i)    FX    Note: FLD m80 not pairing
  9767. FMUL/P            FX
  9768. FSUB/P/R/RP        FX
  9769. FTST            FX
  9770. FUCOM/P/PP        FX
  9771.  
  9772. For more information refer to:
  9773. 1) Optimization for Intel's 32-Bit Processors
  9774.   (Application Note AP-500)
  9775.   Gary CArleton)
  9776.   // Intel Corp. 1993
  9777.   // Order Number 241799
  9778. 2) Supplement to the Pentium (tm) Processor User's
  9779.    Manual
  9780.   // Intel Corp. 1993.
  9781.  
  9782. ------------------------------------------------------------
  9783. APPENDIX  F0    NON FP OPCODES
  9784.  
  9785. Base Format of opcodes:
  9786. <Basecode> <Postbyte> <offset> <immediate_operands>
  9787.  
  9788. Format of Postbyte:
  9789.     (Table )
  9790.   MM RRR MMM
  9791.  
  9792. MM  - Memory addresing mode
  9793. RRR - Register operand address
  9794. MMM - Memory operand address
  9795.  
  9796. RRR    Register Names
  9797. Fields    8bit    16bit    32bit
  9798. 000    AL    AX    EAX
  9799. 001    CL    CX    ECX
  9800. 010    DL    DX    EDX
  9801. 011    BL    BX    EBX
  9802. 100    AH    SP    ESP
  9803. 101    CH    BP    EBP
  9804. 110    DH    SI    ESI
  9805. 111    BH    DI    EDI
  9806.  
  9807. 16bit memory (No 32 bit memory address prefix):
  9808. MMM    Default    MM  Field
  9809. Field    Sreg    00        01        10        11=MMM is reg
  9810. 000    DS    [BX+SI]        [BX+SI+O8]    [BX+SI+O16]
  9811. 001    DS    [BX+DI]        [BX+DI+O8]    [BX+SI+O16]
  9812. 010    SS    [BP+SI]        [BP+SI+O8]    [BP+SI+O16]
  9813. 011    SS    [BP+DI]        [BP+DI+O8]    [BP+DI+O16]
  9814. 100    DS    [SI]        [SI+O8]        [SI+O16]
  9815. 101    DS    [DI]        [DI+O8]        [DI+O16]
  9816. 110    SS    [O16]        [BP+O8]        [BP+O16]
  9817. 111    DS    [BX]        [BX+O8]        [BX+O16]
  9818. Note: MMM=110,MM=00 Default Sreg is DS !!!!
  9819.  
  9820. 32bit memory (Has 67h 32 bit memory address prefix):
  9821. MMM    Default    MM  Field
  9822. Field    Sreg    00        01        10        11=MMM is reg
  9823. 000    DS    [EAX]        [EAX+O8]    [EAX+O32]
  9824. 001    DS    [ECX]        [ECX+O8]    [ECX+O32]
  9825. 010    DS    [EDX]        [EDX+O8]    [EDX+O32]
  9826. 011    DS    [EBX]        [EBX+O8]    [EBX+O32]
  9827. 100 see SIB    [SIB]        [SIB+O8]    [SIB+O32]
  9828. 101    SS    [O32]        [EBP+O8]    [EBP+O32]
  9829. 110    DS    [ESI]        [ESI+O8]    [ESI+O32]
  9830. 111    DS    [EDI]        [EDI+O8]    [EDI+O32]
  9831. Note: MMM=110,MM=00 Default Sreg is DS !!!!
  9832.  
  9833. SIB is (Scale/Base/Index):
  9834.   SS  BBB  III
  9835. Note: SIB address calculated as :
  9836.     <SIB address>=<Base>+<Index>*(2^(Scale))
  9837.  
  9838. Field    Default    Base
  9839. BBB    Sreg    Register    Note
  9840. 000    DS    EAX
  9841. 001    DS    ECX
  9842. 010    DS    EDX
  9843. 011    DS    EBX
  9844. 100    SS    ESP
  9845. 101    DS    O32        If MM=00   (Postbyte)
  9846.     SS    EBP        If MM<>00  (Postbyte)
  9847. 110    DS    ESI
  9848. 111    DS    EDI
  9849.  
  9850. Field    Index
  9851. III    register    Note
  9852. 000    EAX
  9853. 001    ECX
  9854. 010    EDX
  9855. 011    EBX
  9856. 100            Never Index SS can be 00
  9857. 101    EBP
  9858. 110    ESI
  9859. 111    EDI
  9860.  
  9861. Field    Scale coefficient
  9862. SS    =2^(SS)
  9863. 00    1
  9864. 01    2
  9865. 10    4
  9866. 11    8
  9867.  
  9868. Note:
  9869.       <No comments> this code are for 8086 and all other processors
  9870.       NEC V20+       : for NEC V-seria only
  9871.       186+       : for 186/188 and higher
  9872.       286+       : for 80286 and higher
  9873.       386+       : for 80386 and higher
  9874.       486+       : for i486 and higher
  9875.       Cyrix M5+       : for Cyrix only (Cx486S and higher)
  9876.       Pentium+       : for Pentium
  9877.       Pentium Pro+ : for Pentium Pro and higher
  9878.       Pentium II+  : for Pentium II  and higher
  9879.       MMX       : Intel MMX
  9880.       AMD 3D       : AMD 3D MMX Extensions
  9881.       Cyrix EMMX   : Cyrix Extended MMX
  9882.       KNI/MMX2       : Katmai New Instructions/Intel MMX2
  9883.       <specified> : specified
  9884.  
  9885.     mem8    - Memory Operand 8 bit
  9886.     mem    - Memory operand 16/32 or more bit
  9887.     m64    - Memory operand 64-bit
  9888.  
  9889.     reg8    - Register 8 bit
  9890.     reg    - Register 16/32 bit
  9891.     mm    - MMX register    Integer (64-bit)
  9892.     xmm    - MMX2 register F.P    (128-bit)
  9893.     imm8    - Immediate 8 bit
  9894.     imm    - Immediate 16/32 bit
  9895.  
  9896.     ----------------------- [TABLE00]: ---------------------------
  9897.  
  9898. 00    ADD    mem8,reg8
  9899. 01    ADD    mem,reg
  9900. 02    ADD    reg8,mem8
  9901. 03    ADD    reg,mem
  9902. 04    ADD    AL,imm8
  9903. 05    ADD    AX,imm
  9904. 06    PUSH    ES
  9905. 07    POP    ES
  9906. 08    OR    mem8,reg8
  9907. 09    OR    mem,reg
  9908. 0A    OR    reg8,mem8
  9909. 0B    OR    reg,mem
  9910. 0C    OR    AL,imm8
  9911. 0D    OR    AX,imm
  9912. 0E    PUSH    CS
  9913. 0F    POP    CS                ; 8088 non CMOS versions
  9914.     >>>  TABLE 01                ; NECs & 286+
  9915.     Invalid Opcode                ; 186/188
  9916.  
  9917. 10    ADC    mem8,reg8
  9918. 11    ADC    mem,reg
  9919. 12    ADC    reg8,mem8
  9920. 13    ADC    reg,mem
  9921. 14    ADC    AL,imm8
  9922. 15    ADC    AX,imm
  9923. 16    PUSH    SS
  9924. 17    POP    SS
  9925. 18    SBB    mem8,reg8
  9926. 19    SBB    mem,reg
  9927. 1A    SBB    reg8,mem8
  9928. 1B    SBB    reg,mem
  9929. 1C    SBB    AL,imm8
  9930. 1D    SBB    AX,imm
  9931. 1E    PUSH    DS
  9932. 1F    POP    DS
  9933.  
  9934. 20    AND    mem8,reg8
  9935. 21    AND    mem,reg
  9936. 22    AND    reg8,mem8
  9937. 23    AND    reg,mem
  9938. 24    AND    AL,imm8
  9939. 25    AND    AX,imm
  9940. 26    ES:    segment prefix
  9941. 27    DAA
  9942. 28    SUB    mem8,reg8
  9943. 29    SUB    mem,reg
  9944. 2A    SUB    reg8,mem8
  9945. 2B    SUB    reg,mem
  9946. 2C    SUB    AL,imm8
  9947. 2D    SUB    AX,imm
  9948. 2E    CS:    segment prefix
  9949. 2F    DAS
  9950.  
  9951. 30    XOR    mem8,reg8
  9952. 31    XOR    mem,reg
  9953. 32    XOR    reg8,mem8
  9954. 33    XOR    reg,mem
  9955. 34    XOR    AL,imm8
  9956. 35    XOR    AX,imm
  9957. 36    SS:    segment prefix
  9958. 37    AAA
  9959. 38    CMP    mem8,reg8
  9960. 39    CMP    mem,reg
  9961. 3A    CMP    reg8,mem8
  9962. 3B    CMP    reg,mem
  9963. 3C    CMP    AL,imm8
  9964. 3D    CMP    AX,imm
  9965. 3E    DS:    segment prefix
  9966. 3F    AAS
  9967.  
  9968. 40    INC    AX
  9969. 41    INC    CX
  9970. 42    INC    DX
  9971. 43    INC    BX
  9972. 44    INC    SP
  9973. 45    INC    BP
  9974. 46    INC    SI
  9975. 47    INC    DI
  9976. 48    DEC    AX
  9977. 49    DEC    CX
  9978. 4A    DEC    DX
  9979. 4B    DEC    BX
  9980. 4C    DEC    SP
  9981. 4D    DEC    BP
  9982. 4E    DEC    SI
  9983. 4F    DEC    DI
  9984.  
  9985. 50    PUSH    AX
  9986. 51    PUSH    CX
  9987. 52    PUSH    DX
  9988. 53    PUSH    BX
  9989. 54    PUSH    SP
  9990. 55    PUSH    BP
  9991. 56    PUSH    SI
  9992. 57    PUSH    DI
  9993. 58    POP    AX
  9994. 59    POP    CX
  9995. 5A    POP    DX
  9996. 5B    POP    BX
  9997. 5C    POP    SP
  9998. 5D    POP    BP
  9999. 5E    POP    SI
  10000. 5F    POP    DI
  10001.  
  10002. 60    PUSHA                    ; NECs & 186+
  10003. 61    POPA                    ; NECs & 186+
  10004. 62    BOUND    reg,mem                ; NECs & 186+
  10005. 63    ARPL    reg,mem                ; 286+ PM
  10006. 64    FS:    segment prefix            ; 386+
  10007. 65    GS:    segment prefix            ; 386+
  10008. 66    Memory access size prefix        ; 386+
  10009. 67    Operands size prefix            ; 386+
  10010. 68    PUSH    imm                ; NECs & 186+
  10011. 69    IMUL    reg,imm,mem            ; NECs & 186+
  10012. 6A    PUSH    imm8                ; NECs & 186+
  10013. 6B    IMUL    reg,imm8,mem            ; NECs & 186+
  10014. 6C    INSB                    ; 186+
  10015. 6D    INS                    ; 186+
  10016. 6E    OUTSB                    ; 186+
  10017. 6F    OUTS                    ; 186+
  10018.  
  10019. 70    JO    rel8
  10020. 71    JNO    rel8
  10021. 72    JC    rel8
  10022. 73    JNC    rel8
  10023. 74    JZ    rel8
  10024. 75    JNZ    rel8
  10025. 76    JNA    rel8
  10026. 77    JA    rel8
  10027. 78    JS    rel8
  10028. 79    JNS    rel8
  10029. 7A    JP    rel8
  10030. 7B    JNP    rel8
  10031. 7C    JL    rel8
  10032. 7D    JNL    rel8
  10033. 7E    JNG    rel8
  10034. 7F    JG    rel8
  10035.  
  10036. 80    code extention [1]
  10037. 81    code extention [2]
  10038. 82    code extention [3]
  10039. 83    code extention [4]
  10040. 84    TEST    mem8,reg8
  10041. 85    TEST    mem,reg
  10042. 86    XCHG    mem8,reg8
  10043. 87    XCHG    mem,reg
  10044. 88    MOV    mem8,reg8
  10045. 89    MOV    mem,reg
  10046. 8A    MOV    reg8,mem8
  10047. 8B    MOV    reg,mem
  10048. 8C    code extention [5]
  10049. 8D    LEA    reg,mem
  10050. 8E    code extention [6]
  10051. 8F    code extention [7]
  10052.  
  10053. 90    NOP
  10054. 91    XCHG    AX,CX
  10055. 92    XCHG    AX,DX
  10056. 93    XCHG    AX,BX
  10057. 94    XCHG    AX,SP
  10058. 95    XCHG    AX,BP
  10059. 96    XCHG    AX,SI
  10060. 97    XCHG    AX,DI
  10061. 98    CBW
  10062. 66 98    CWDE                    ; 386+
  10063. 99    CWD
  10064. 66 99    CDQ                    ; 386+
  10065. 9A    CALL    FAR    seg:offs
  10066. 9B    WAIT/FWAIT
  10067. 9C    PUSHF
  10068. 66 9C    PUSHFD                    ; 386+
  10069. 9D    POPF
  10070. 66 9D    POPFD                    ; 386+
  10071. 9E    SAHF
  10072. 9F    LAHF
  10073.  
  10074. A0    MOV    AL,[imm]
  10075. A1    MOV    AX,[imm]
  10076. A2    MOV    [imm],AL
  10077. A3    MOV    [imm],ax
  10078. A4    MOVSB
  10079. A5    MOVS
  10080. A6    CMPSB
  10081. A7    CMPS
  10082. A8    TEST    AL,imm8
  10083. A9    TEST    AX,imm
  10084. AA    STOSB
  10085. AB    STOS
  10086. AC    LODSB
  10087. AD    LODS
  10088. AE    SCASB
  10089. AF    SCAS
  10090.  
  10091. B0    MOV    AL,imm8
  10092. B1    MOV    CL,imm8
  10093. B2    MOV    DL,imm8
  10094. B3    MOV    BL,imm8
  10095. B4    MOV    AH,imm8
  10096. B5    MOV    CH,imm8
  10097. B6    MOV    DH,imm8
  10098. B7    MOV    BH,imm8
  10099. B8    MOV    AX,imm
  10100. B9    MOV    CX,imm
  10101. BA    MOV    DX,imm
  10102. BB    MOV    BX,imm
  10103. BC    MOV    SP,imm
  10104. BD    MOV    BP,imm
  10105. BE    MOV    SI,imm
  10106. BF    MOV    DI,imm
  10107.  
  10108. C0    code extention [8]
  10109. C1    code extention [9]
  10110. C2    RET    NEAR    imm
  10111. C3    RET    NEAR
  10112. C4    LES    reg,mem
  10113. C5    LDS    reg,mem
  10114. C6    code extention [10]
  10115. C7    code extention [11]
  10116. C8    ENTER    imm,imm8            ; NECs & 186+
  10117. C9    LEAVE                    ; NECs & 186+
  10118. CA    RET    FAR    imm
  10119. CB    RET    FAR
  10120. CC    INT    3
  10121. CD    INT    imm8
  10122. CE    INTO
  10123. CF    IRET
  10124.  
  10125. D0    code extention    [12]
  10126. D1    code extention    [13]
  10127. D2    code extention    [14]
  10128. D3    code extention    [15]
  10129. D4    AAM    imm8                ; NECs w/o imm8 but D4 0A only
  10130. D5    AAD    imm8                ; NECs w/o imm8 but D4 0A only
  10131. D6    SETALC                    ; 286+
  10132. D7    XLAT
  10133. D8-DF    ESC    imm6,mem            ; Note: Refer to Appendix F1
  10134.                         ; (Cooprocessor commands).
  10135.  
  10136. E0    LOOPNZ    rel8
  10137. E1    LOOPZ    rel8
  10138. E2    LOOP    rel8
  10139. E3    JCXZ    rel8
  10140. 66 E3    JECXZ    rel8                ; 386+
  10141. E4    IN    AL,imm8
  10142. E5    IN    AX,imm8
  10143. E6    OUT    imm8,AL
  10144. E7    OUT    imm8,AX
  10145. E8    CALL    NEAR    rel16
  10146. E9    JMP    NEAR    rel16
  10147. EA    JMP    FAR    seg:offs
  10148. EB    JMP    SHORT    rel8
  10149. EC    IN    AL,DX
  10150. ED    IN    AX,DX
  10151. EE    OUT    DX,AL
  10152. EF    OUT    DX,AX
  10153.  
  10154. F0    LOCK    prefix
  10155. F1    SMI                    ; AMD Am386/486DXLV
  10156. F2    REPNZ
  10157. F3    REP/REPZ                ; Used in KNI/MMX2 as
  10158.                         ; Modificator !!!!!!
  10159. F4    HLT
  10160. F5    CMC
  10161. F6    code extention [16]
  10162. F7    code extention [17]
  10163. F8    CLC
  10164. F9    STC
  10165. FA    CLI
  10166. FB    STI
  10167. FC    CLD
  10168. FD    STD
  10169. FE    code extention [18]
  10170. FF    code extention [19]
  10171.  
  10172.     ----------------------- [TABLE 01]: ---------------------------
  10173. Note: First Byte of Operation is 0Fh
  10174.  
  10175. 00    Extended Opcode 20            ; 286+
  10176. 01    Extended Opcode 21            ; 286+
  10177. 02    LAR    reg,mem                ; 286+
  10178. 03    LSL    reg,mem                ; 286+
  10179. 04    LOADALL                    ; 286 only
  10180. 05    LOADALL                    ; 286 only
  10181. 05    SYSCALL                    ; AMD K6
  10182. 06    CLTS                    ; 286+
  10183. 07    LOADALL                    ; 386,486, None Pentium+
  10184.     RES3                    ; AMD Am386zXLV
  10185.     RES4                    ; AMD Am486DXLV
  10186.     ICERET                    ; IBM 386SLC,486SLC,486SLC2
  10187.     SYSRET                    ; AMD K6
  10188. 08    INVD                    ; 486+
  10189. 09    WBINVD                    ; 486+
  10190. 0A    Reserved, INT 6
  10191. 0B    UD2                    ; all, but documented on
  10192.                         ; Pentium Pro only
  10193. 0C
  10194. 0D    code extention [25]            ; AMD 3D
  10195. 0E    FEMMS                    ; AMD 3D
  10196. 0F    >>> TABLE 02                ; AMD 3D
  10197.  
  10198. 10    UMOV    mem8,reg8            ; Really different op. space
  10199.                         ; 386-486, Never Pentium+
  10200.                         ; on AMD Amz86zXLV,never Cx5x86+
  10201.     TEST1    mem8,CL                ; NEC V20+
  10202.     MOVSS    xmm,xmm/mem            ; KNI/MMX2    (F3 0F 10)
  10203.     MOVUPS    xmm,xmm/mem            ; KNI/MMX2
  10204. 11    UMOV    mem,reg                ; see 0Fh,10h
  10205.     TEST1    mem,CL                ; NEC V20+
  10206.     MOVSS    xmm/mem,xmm            ; KNI/MMX2    (F3 0F 11)
  10207.     MOVUPS    xmm/mem,xmm            ; KNI/MMX2
  10208. 12    UMOV    reg8,mem8            ; see 0Fh,10h
  10209.     CLEAR1    mem8,CL                ; NEC V20+
  10210.     MOVLPS    xmm,xmm/mem            ; KNI/MMX2
  10211. 13    UMOV    reg,mem                ; see 0Fh,10h
  10212.     CLEAR1    mem,CL                ; NEC V20+
  10213.     MOVLPS    xmm/mem,xmm            ; KNI/MMX2
  10214. 14    SET1    mem8,CL                ; NEC V20+
  10215.     UNPCKLPS xmm,xmm/mem            ; KNI/MMX2
  10216. 15    SET1    mem,CL                ; NEC V20+
  10217.     UNPCKHPS xmm,xmm/mem            ; KNI/MMX2
  10218. 16    NOT1    mem8,CL                ; NEC V20+
  10219.     MOVHPS    xmm,xmm/mem            ; KNI/MMX2
  10220. 17    NOT1    mem,CL                ; NEC V20+
  10221.     MOVHPS    xmm/mem,xmm            ; KNI/MMX2
  10222. 18    TEST1    mem8,imm8            ; NEC V20+
  10223.     code extension [26]            ; KNI/MMX2
  10224. 19    TEST1    mem,imm8            ; NEC V20+
  10225. 1A    CLEAR1    mem8,imm8            ; NEC V20+
  10226. 1B    CLEAR1    mem,imm8            ; NEC V20+
  10227. 1C    SET1    mem8,imm8            ; NEC V20+
  10228. 1D    SET1    mem,imm8            ; NEC V20+
  10229. 1E    NOT1    mem8,imm8            ; NEC V20+
  10230. 1F    NOT1    mem,imm8            ; NEC V20+
  10231.  
  10232. 20    MOV    reg32,CRn            ; 386+
  10233.     ADD4S                    ; NEC V20+
  10234. 21    MOV    reg32,DRn            ; 386+
  10235. 22    MOV    CRn,reg32            ; 386+
  10236.     SUB4S                    ; NEC V20+
  10237. 23    MOV    DRn,reg32            ; 386+
  10238. 24    MOV    reg32,TRn            ; 386-486 only, and Cyrix
  10239. 25
  10240. 26    MOV    TRn,reg32            ; 386-486 only, and Cyrix
  10241.     CMPS4S                    ; NEC V20+
  10242. 27
  10243. 28    ROL4      mem8                ; NEC V20+
  10244.     MOVAPS      xmm,xmm/mem            ; KNI/MMX2
  10245. 29    MOVAPS      xmm/mem,xmm            ; KNI/MMX2
  10246. 2A    ROL4      mem8                ; NEC V20+
  10247.     CVTPI2PS  xmm,mm/mem            ; KNI/MMX2
  10248.     CVTSI2SS  xmm,r32/mem            ; KNI/MMX2    (F3 0F 2A)
  10249. 2B    MOVNTPS      xmm/mem,xmm            ; KNI/MMX2
  10250. 2C    CVTTPS2PI mm,xmm/mem            ; KNI/MMX2
  10251.     CVTTSS2SI r32,xmm/mem            ; KNI/MMX2    (F3 0F 2C)
  10252. 2D    CVTPS2PI  mm,xmm/mem            ; KNI/MMX2
  10253.     CVTSS2SI  r32,xmm/mem            ; KNI/MMX2    (F3 0F 2D)
  10254. 2E    UCOMISS      xmm,xmm/mem            ; KNI/MMX2
  10255. 2F    COMISS      xmm,xmm/mem            ; KNI/MMX2
  10256.  
  10257. 30    WRMSR                    ; Pentium+, IBM 386SLC,486SLC/SLC2
  10258. 31    RDTSC                    ; Pentium+
  10259.     INS    reg8,reg8            ; NEC V20+   ; Note: NECINS
  10260. 32    RDMSR                    ; Pentium, IBM 386SLC,486SLC/SLC2
  10261. 33    EXT    reg8,reg8            ; NEC V20+
  10262.     RDPMC                    ; Pentium Pro+
  10263. 34    SYSENTER                ; Pentium II+
  10264. 35    SYSEXIT                    ; Pentium II+
  10265. 36    RDSHR    reg/mem32            ; Cx6x86MX  (SMM only)
  10266. 37    WRSHR    reg/mem32            ; Cx6x86MX  (SMM only)
  10267. 38
  10268. 39
  10269. 3A
  10270. 3B
  10271. 3C
  10272. 3D
  10273. 3E
  10274. 3F
  10275.  
  10276. 40    CMOVO    reg,mem                ; Pentium Pro+
  10277. 41    CMOVNO    reg,mem                ; Pentium Pro+
  10278. 42    CMOVC    reg,mem                ; Pentium Pro+
  10279. 43    CMOVNC    reg,mem                ; Pentium Pro+
  10280. 44    CMOVZ    reg,mem                ; Pentium Pro+
  10281. 45    CMOVNZ    reg,mem                ; Pentium Pro+
  10282. 46    CMOVA    reg,mem                ; Pentium Pro+
  10283. 47    CMOVNA    reg,mem                ; Pentium Pro+
  10284. 48    CMOVS    reg,mem                ; Pentium Pro+
  10285. 49    CMOVNS    reg,mem                ; Pentium Pro+
  10286. 4A    CMOVP    reg,mem                ; Pentium Pro+
  10287. 4B    CMOVNP    reg,mem                ; Pentium Pro+
  10288. 4C    CMOVL    reg,mem                ; Pentium Pro+
  10289. 4D    CMOVNL    reg,mem                ; Pentium Pro+
  10290. 4E    CMOVNG    reg,mem                ; Pentium Pro+
  10291. 4F    CMOVG    reg,mem                ; Pentium Pro+
  10292.  
  10293. 50    PAVEB        mm,mm/m64        ; Cyrix EMMX
  10294.     MOVMSKPS    r32,xmm            ; KNI/MMX2
  10295. 51    PADDSIW        mm,mm/m64        ; Cyrix EMMX
  10296.     SQRTPS        xmm,xmm/mem        ; KNI/MMX2
  10297.     SQRTSS        xmm,xmm/mem        ; KNI/MMX2    (F3 0F 51)
  10298. 52    PMAGW        mm,mm/m64        ; Cyrix EMMX
  10299.     PSQRTPS        xmm,xmm/mem        ; KNI/MMX2
  10300.     PSQRTSS        xmm,xmm/mem        ; KNI/MMX2    (F3 0F 52)
  10301. 53    RCPPS        xmm,xmm/mem        ; KNI/MMX2
  10302.     RCPSS        xmm,xmm/mem        ; KNI/MMX2    (F3 0F 53)
  10303. 54    PDISTIB        mm,m64            ; Cyrix EMMX
  10304.     ANDPS        xmm,xmm/mem        ; KNI/MMX2
  10305. 55    PSUBSIW        mm,mm/m64        ; Cyrix EMMX
  10306.     ANDNPS        xmm,xmm/mem        ; KNI/MMX2
  10307. 56    ORPS        xmm,xmm/mem        ; KNI/MMX2
  10308. 57    XORPS        xmm,xmm/mem        ; KNI/MMX2
  10309. 58    PMVZB        mm,m64            ; Cyrix EMMX
  10310.     ADDPS        xmm,xmm/mem        ; KNI/MMX2
  10311.     ADDSS        xmm,xmm/mem        ; KNI/MMX2    (F3 0F 58)
  10312. 59    PMULHRW        mm,mm/m64        ; Cyrix EMMX
  10313.     MULPS        xmm,xmm/mem        ; KNI/MMX2
  10314.     MULSS        xmm,xmm/mem        ; KNI/MMX2    (F3 0F 59)
  10315. 5A    PMVNZB        mm,m64            ; Cyrix EMMX
  10316. 5B    PMVLZB        mm,m64            ; Cyrix EMMX
  10317. 5C    PMVGEZB        mm,m64            ; Cyrix EMMX
  10318.     SUBPS        xmm,xmm/mem        ; KNI/MMX2
  10319.     SUBSS        xmm,xmm/mem        ; KNI/MMX2    (F3 0F 5C)
  10320. 5D    PMULHRIW    mm,mm/m64        ; Cyrix EMMX
  10321.     MINPS        xmm,xmm/mem        ; KNI/MMX2
  10322.     MINSS        xmm,xmm/mem        ; KNI/MMX2    (F3 0F 5D)
  10323. 5E    PMACHRIW    mm,m64            ; Cyrix EMMX
  10324.     DIVPS        xmm,xmm/mem        ; KNI/MMX2
  10325.     DIVSS        xmm,xmm/mem        ; KNI/MMX2    (F3 0F 5E)
  10326. 5F    MAXPS        xmm,xmm/mem        ; KNI/MMX2
  10327.     MAXSS        xmm,xmm/mem        ; KNI/MMX2    (F3 0F 5F)
  10328.  
  10329. 60    PUNPCKLBW    mm,mm/m32        ; MMX
  10330. 61    PUNPCKLWD    mm,mm/m32        ; MMX
  10331. 62    PUNPCKLDQ    mm,mm/m32        ; MMX
  10332. 63    PACKSSWB    mm,mm/m64        ; MMX
  10333. 64    PCMPGTB        mm,mm/m64        ; MMX
  10334. 65    PCMPGTW        mm,mm/m64        ; MMX
  10335. 66    PCMPGTD        mm,mm/m64        ; MMX
  10336. 67    PACKUSWB    mm,mm/m64        ; MMX
  10337. 68    PUNPCKHBW    mm,mm/m64        ; MMX
  10338. 69    PUNPCKHWD    mm,mm/m64        ; MMX
  10339. 6A    PUNPCKHDQ    mm,mm/m64        ; MMX
  10340. 6B    PACKSSDW    mm,mm/m64        ; MMX
  10341. 6C
  10342. 6D
  10343. 6E    MOVD        mm,r/m32        ; MMX
  10344. 6F    MOVD        mm,mm/m64        ; MMX
  10345.  
  10346. 70    PSHUF        mm,mm/mem,i8        ; KNI/MMX2
  10347. 71    code extention [24]            ; MMX
  10348. 72    code extention [25]            ; MMX
  10349. 73    code extention [26]            ; MMX
  10350. 74    PCMPEQB        mm,mm/m64        ; MMX
  10351. 75    PCMPEQW        mm,mm/m64        ; MMX
  10352. 76    PCMPEQD        mm,mm/m64        ; MMX
  10353. 77    EMMS                    ; MMX
  10354. 78    SVDC    mem,sreg            ; Cyrix M5+ (SMM only)
  10355. 79    RSDC    sreg,mem            ; Cyrix M5+ (SMM only)
  10356. 7A    SVLDT    mem                ; Cyrix M5+ (SMM only)
  10357. 7B    RSLDT    mem                ; Cyrix M5+ (SMM only)
  10358. 7C    SVTS    mem                ; Cyrix M5+ (SMM only)
  10359. 7D    RSTS    mem                ; Cyrix M5+ (SMM only)
  10360. 7E    SMINT                    ; Cyrix M6+
  10361. 7E    MOVD    r/m32,mm            ; MMX
  10362. 7F    MOVD    mm/m64,mm            ; MMX
  10363.  
  10364. 80    JO    rel16                ; 386+
  10365. 81    JNO    rel16                ; 386+
  10366. 82    JC    rel16                ; 386+
  10367. 83    JNC    rel16                ; 386+
  10368. 84    JZ    rel16                ; 386+
  10369. 85    JNZ    rel16                ; 386+
  10370. 86    JNA    rel16                ; 386+
  10371. 87    JA    rel16                ; 386+
  10372. 88    JS    rel16                ; 386+
  10373. 89    JNS    rel16                ; 386+
  10374. 8A    JP    rel16                ; 386+
  10375. 8B    JNP    rel16                ; 386+
  10376. 8C    JL    rel16                ; 386+
  10377. 8D    JNL    rel16                ; 386+
  10378. 8E    JNG    rel16                ; 386+
  10379. 8F    JG    rel16                ; 386+
  10380.  
  10381. 90    SETO    mem8                ; 386+
  10382. 91    SETNO    mem8                ; 386+
  10383. 92    SETC    mem8                ; 386+
  10384. 93    SETNC    mem8                ; 386+
  10385. 94    SETZ    mem8                ; 386+
  10386. 95    SETNZ    mem8                ; 386+
  10387. 96    SETNA    mem8                ; 386+
  10388. 97    SETA    mem8                ; 386+
  10389. 98    SETS    mem8                ; 386+
  10390. 99    SETNS    mem8                ; 386+
  10391. 9A    SETP    mem8                ; 386+
  10392. 9B    SETNP    mem8                ; 386+
  10393. 9C    SETL    mem8                ; 386+
  10394. 9D    SETNL    mem8                ; 386+
  10395. 9E    SETNG    mem8                ; 386+
  10396. 9F    SETG    mem8                ; 386+
  10397.  
  10398. A0    PUSH    FS                ; 386+
  10399. A1    POP    FS                ; 386+
  10400. A2    CPUID                    ; 486 SL enhanced, Pentium+
  10401.                         ; UMC,i386CX,Cyrix M1+,AMD K5+,
  10402.                         ; Some NexGen, IDT
  10403. A3    BT    mem,reg                ; 386+
  10404. A4    SHLD    mem,reg,imm            ; 386+
  10405. A5    SHLD    mem,reg,CL            ; 386+
  10406. A6    XBTS    reg,mem,AX,CL            ; Intel (!!!) 80386 steps A0-B0
  10407.     CMPXCHG    mem8,reg8            ; Intel (!!!) 80486 steps A0-B0
  10408. A7    IBTS    mem,AX,CL,reg            ; Intel (!!!) 80386 steps A0-B0
  10409.     CMPXCHG mem,reg                ; Intel (!!!) 80486 steps A0-B0
  10410. A8    PUSH    GS                ; 386+
  10411. A9    POP    GS                ; 386+
  10412. AA    RSM                    ; i486 SL Enhanced, i386CX
  10413.                         ; Intel Pentium+, etc
  10414. AB    BTS    mem,reg                ; 386+
  10415. AC    SHRD    mem,reg,imm            ; 386+
  10416. AD    SHRD    mem,reg,CL            ; 386+
  10417. AE    code extention [24]
  10418. AF    IMUL    reg,mem                ; 386+
  10419.  
  10420. B0    CMPXCHG mem8,reg8            ; 486+ (Intel B1+ step only)
  10421. B1    CMPXCHG mem,reg                ; 486+ (Intel B1+ step only)
  10422. B2    LSS    reg,mem                ; 386+
  10423. B3    BTR    mem,reg                ; 386+
  10424. B4    LFS    reg,mem                ; 386+
  10425. B5    LGS    reg,mem                ; 386+
  10426. B6    MOVZX    reg,mem8            ; 386+
  10427. B7    MOVZX    reg32,mem            ; 386+
  10428. B8
  10429. B9    UD2                    ; one more Undefined Opcode-2
  10430. BA    code extention [22]
  10431. BB    BTC    mem,reg                ; 386+
  10432. BC    BSF    reg,mem                ; 386+
  10433. BD    BSR    reg,mem                ; 386+
  10434. BE    MOVSX    reg,mem8            ; 386+
  10435. BF    MOVSX    reg32,mem            ; 386+
  10436.  
  10437. C0    XADD    mem8,reg8            ; 486+
  10438. C1    XADD    mem,reg                ; 486+
  10439. C2    code extension [27]            ; KNI/MMX2
  10440. C3
  10441. C4    PINSRW    mm,r32/mem,i8            ; KNI/MMX2
  10442. C5    PEXTRW    r32,mm,i8            ; KNI/MMX2
  10443. C6    SHUFPS    xmm,xmm/mem,i8            ; KNI/MMX2
  10444. C7    code extention [23]
  10445. C8    BSWAP    EAX                ; 486+
  10446. C9    BSWAP    ECX                ; 486+
  10447. CA    BSWAP    EDX                ; 486+
  10448. CB    BSWAP    EBX                ; 486+
  10449. CC    BSWAP    ESP                ; 486+
  10450. CD    BSWAP    EBP                ; 486+
  10451. CE    BSWAP    ESI                ; 486+
  10452. CF    BSWAP    EDI                ; 486+
  10453.  
  10454. D0
  10455. D1    PSRLW    mm,mm/m64            ; MMX
  10456. D2    PSRLD    mm,mm/m64            ; MMX
  10457. D3    PSRLQ    mm,mm/m64            ; MMX
  10458. D4
  10459. D5    PMULLW    mm,mm/m64            ; MMX
  10460. D6
  10461. D7    PMOVMSKB r32/m32,mm            ; KNI/MMX2
  10462. D8
  10463. D9
  10464. DA    PMINUB    mm,mm/mem            ; KNI/MMX2
  10465. DB
  10466. DC
  10467. DD
  10468. DE    PMAXSB    mm,mm/m64            ; KNI/MMX2
  10469. DF    PMAXSW    mm,mm/m64            ; KNI/MMX2
  10470.  
  10471. E0    PAVGB    mm,mm/m64            ; KNI/MMX2
  10472. E1    PSRAW    mm,mm/m64            ; MMX
  10473. E2    PSRAD    mm,mm/m64            ; MMX
  10474. E3    PAVGW    mm,mm/m64            ; KNI/MMX2
  10475. E4    PMULHUW mm,mm/m64            ; KNI/MMX2
  10476. E5    PMULHW    mm,mm/m64            ; MMX
  10477. E6
  10478. E7    MOVNTQ    mem,mm                ; KNI/MMX2
  10479. E8
  10480. E9
  10481. EA    PMINSW    mm,mm/m64            ; KNI/MMX2
  10482. EB
  10483. EC
  10484. ED
  10485. EE    PMAXSW    mm,mm/m64            ; KNI/MMX2
  10486. EF
  10487.  
  10488. F0
  10489. F1    PSLLW      mm,mm/m64            ; MMX
  10490. F2    PSLLD      mm,mm/m64            ; MMX
  10491. F3    PSLLQ      mm,mm/m64            ; MMX
  10492. F4
  10493. F5    PMULADDWD mm,mm/m64            ; MMX
  10494. F6    PSADBW      mm,mm/m64            ; KNI/MMX2
  10495. F7    MASKMOVQ  mm,mm/m64            ; KNI/MMX2
  10496. F8
  10497. F9
  10498. FA
  10499. FB
  10500. FC
  10501. FD
  10502. FE
  10503. FF    UD                    ; AMD Am5k86+  and all other CPUs
  10504. FF    OIO                    ; Cyrix Cx6x86+ and all other CPUs
  10505. FF    BRKEM    imm8                ; NEC V20+
  10506.  
  10507.     ---------------------- [TABLE 02] --------------------------
  10508. First bytes is 0Fh,0Fh
  10509. (In Table 02 marked only valid opcodes)
  10510.  
  10511. 0D    PI2FD    mm,mm/m64            ; AMD 3D
  10512. 1D    PF2ID    mm,mm/m64            ; AMD 3D
  10513. 90    PFCMPGE    mm,mm/m64            ; AMD 3D
  10514. 94    PFMIN    mm,mm/m64            ; AMD 3D
  10515. 96    PFRCP    mm,mm/m64            ; AMD 3D
  10516. 97    PFRSQRT mm,mm/m64            ; AMD 3D
  10517. 9A    PFSUB    mm,mm/m64            ; AMD 3D
  10518. 9E    PFADD    mm,mm/m64            ; AMD 3D
  10519. A0    PFCMPGT mm,mm/m64            ; AMD 3D
  10520. A4    PFMAX    mm,mm/m64            ; AMD 3D
  10521. A6    PFRCPIT1 mm,mm/m64            ; AMD 3D
  10522. A7    PFRSQIT1 mm,mm/m64            ; AMD 3D
  10523. AA    PFSUBR    mm,mm/m64            ; AMD 3D
  10524. AE    PFACC    mm,mm/m64            ; AMD 3D
  10525. B0    PFCMPEQ mm,mm/m64            ; AMD 3D
  10526. B4    PFMUL    mm,mm/m64            ; AMD 3D
  10527. B6    PFRCPIT2 mm,mm/m64            ; AMD 3D
  10528. B7    PMULHRW mm,mm/m64            ; AMD 3D
  10529. BF    PAVGUSB    mm,mm/m64            ; AMD 3D
  10530.  
  10531.   **************************************************
  10532. CODE EXTENTIONS:
  10533.  
  10534. First byte(s) look at TABLES#00,01
  10535. Next byte have format
  10536.      MMOOOMMM  :  MM is memory mode (see postbyte)
  10537.           OOO select operation in this extention code field
  10538.           MMM is memory field (see Postbyte)
  10539.  
  10540. Code Extention # 1
  10541. (First byte(s) = 80h)
  10542. Field
  10543. OOO    Operation
  10544. 000    ADD    mem8,imm8
  10545. 001    OR    mem8,imm8
  10546. 010    ADC    mem8,imm8
  10547. 011    SBB    mem8,imm8
  10548. 100    AND    mem8,imm8
  10549. 101    SUB    mem8,imm8
  10550. 110    XOR    mem8,imm8
  10551. 111    CMP    mem8,imm8
  10552.  
  10553. Code Extention # 2
  10554. (First byte(s) = 81h)
  10555. Field
  10556. OOO    Operation
  10557. 000    ADD    mem,imm
  10558. 001    OR    mem,imm
  10559. 010    ADC    mem,imm
  10560. 011    SBB    mem,imm
  10561. 100    AND    mem,imm
  10562. 101    SUB    mem,imm
  10563. 110    XOR    mem,imm
  10564. 111    CMP    mem,imm
  10565.  
  10566. Code Extention # 3
  10567. (First byte(s) = 82h)
  10568. Note: On some models, undefined code do nothing, on any work as 83h
  10569.       None INT 6 at all.
  10570. Field
  10571. OOO    Operation
  10572. 000    ADD    mem8,simm8
  10573. 001
  10574. 010    ADC    mem8,simm8
  10575. 011    SBB    mem8,simm8
  10576. 100
  10577. 101    SUB    mem8,simm8
  10578. 110
  10579. 111    CMP    mem8,simm8
  10580.  
  10581. Code Extention # 4
  10582. (First byte(s) = 83h)
  10583. Field
  10584. OOO    Operation
  10585. 000    ADD    mem,simm8
  10586. 001    OR    mem,simm8            ; 386+
  10587. 010    ADC    mem,simm8
  10588. 011    SBB    mem,simm8
  10589. 100    AND    mem,simm8            ; 386+
  10590. 101    SUB    mem,simm8
  10591. 110    XOR    mem,simm8            ; 388+
  10592. 111    CMP    mem,simm8
  10593.  
  10594. Code Extention # 5
  10595. (First byte(s) = 8Ch)
  10596. Field
  10597. OOO    Operation
  10598. 000    MOV    mem,ES
  10599. 001    MOV    mem,CS
  10600. 010    MOV    mem,SS
  10601. 011    MOV    mem,DS
  10602. 100    MOV    mem,FS                ; 386+
  10603. 101    MOV    mem,GS                ; 386+
  10604. 110
  10605. 111
  10606.  
  10607. Code Extention # 6
  10608. (First byte(s) = 8Eh)
  10609. Field
  10610. OOO    Operation
  10611. 000    MOV    ES,mem
  10612. 001    MOV    CS,mem                ; Non CMOS version of 8086/8088 only
  10613. 010    MOV    SS,mem
  10614. 011    MOV    DS,mem
  10615. 100    MOV    FS,mem                ; 386+
  10616. 101    MOV    GS,mem                ; 386+
  10617. 110
  10618. 111
  10619.  
  10620. Code Extention # 7
  10621. (First byte(s) = 8Fh)
  10622. Note: i486 can eat any OOO.
  10623. Field
  10624. OOO    Operation
  10625. 000    POP    mem
  10626. 001
  10627. 010
  10628. 011
  10629. 100
  10630. 101
  10631. 110
  10632. 111
  10633.  
  10634. Code Extention # 8
  10635. (First byte(s) = C0h)
  10636. Field
  10637. OOO    Operation
  10638. 000    ROL    mem8,imm8            ; 186+
  10639. 001    ROR    mem8,imm8            ; 186+
  10640. 010    RCL    mem8,imm8            ; 186+
  10641. 011    RCR    mem8,imm8            ; 186+
  10642. 100    SHL    mem8,imm8            ; 186+
  10643. 101    SHR    mem8,imm8            ; 186+
  10644. 110    SAL    mem8,imm8            ; 186+
  10645. 111    SAR    mem8,imm8            ; 186+
  10646.  
  10647. Code Extention # 9
  10648. (First byte(s) = C1h)
  10649. Field
  10650. OOO    Operation
  10651. 000    ROL    mem,imm8            ; 186+
  10652. 001    ROR    mem,imm8            ; 186+
  10653. 010    RCL    mem,imm8            ; 186+
  10654. 011    RCR    mem,imm8            ; 186+
  10655. 100    SHL    mem,imm8            ; 186+
  10656. 101    SHR    mem,imm8            ; 186+
  10657. 110    SAL    mem,imm8            ; 186+
  10658. 111    SAR    mem,imm8            ; 186+
  10659.  
  10660. Code Extention # 10
  10661. (First byte(s) = C6h)
  10662. Note: i486 can eat any OOO field.
  10663. Field
  10664. OOO    Operation
  10665. 000    MOV    mem8,imm8
  10666. 001
  10667. 010
  10668. 011
  10669. 100
  10670. 101
  10671. 110
  10672. 111
  10673.  
  10674. Code Extention # 11
  10675. (First byte(s) = C7h)
  10676. Note: i486 can eat any OOO field
  10677. Field
  10678. OOO    Operation
  10679. 000    MOV    mem,imm16
  10680. 001
  10681. 010
  10682. 011
  10683. 100
  10684. 101
  10685. 110
  10686. 111
  10687.  
  10688. Code Extention # 12
  10689. (First byte(s) = D0h)
  10690. Field
  10691. OOO    Operation
  10692. 000    ROL    mem8,1
  10693. 001    ROR    mem8,1
  10694. 010    RCL    mem8,1
  10695. 011    RCR    mem8,1
  10696. 100    SHL    mem8,1
  10697. 101    SHR    mem8,1
  10698. 110    SAL    mem8,1
  10699. 111    SAR    mem8,1
  10700.  
  10701. Code Extention # 13
  10702. (First byte(s) = D1h)
  10703. Field
  10704. OOO    Operation
  10705. 000    ROL    mem,1
  10706. 001    ROR    mem,1
  10707. 010    RCL    mem,1
  10708. 011    RCR    mem,1
  10709. 100    SHL    mem,1
  10710. 101    SHR    mem,1
  10711. 110    SAL    mem,1
  10712. 111    SAR    mem,1
  10713.  
  10714. Code Extention # 14
  10715. (First byte(s) = D2h)
  10716. Field
  10717. OOO    Operation
  10718. 000    ROL    mem8,CL
  10719. 001    ROR    mem8,CL
  10720. 010    RCL    mem8,CL
  10721. 011    RCR    mem8,CL
  10722. 100    SHL    mem8,CL
  10723. 101    SHR    mem8,CL
  10724. 110    SAL    mem8,CL
  10725. 111    SAR    mem8,CL
  10726.  
  10727. Code Extention # 15
  10728. (First byte(s) = D3h)
  10729. Field
  10730. OOO    Operation
  10731. 000    ROL    mem,CL
  10732. 001    ROR    mem,CL
  10733. 010    RCL    mem,CL
  10734. 011    RCR    mem,CL
  10735. 100    SHL    mem,CL
  10736. 101    SHR    mem,CL
  10737. 110    SAL    mem,CL
  10738. 111    SAR    mem,CL
  10739.  
  10740. Code Extention # 16
  10741. (First byte(s) = F6h)
  10742. Note: Usually 001 do same thing as 000, TEST mem8,imm8
  10743. Field
  10744. OOO    Operation
  10745. 000    TEST    mem8,imm8
  10746. 001
  10747. 010    NOT    mem8
  10748. 011    NEG    mem8
  10749. 100    MUL    mem8
  10750. 101    IMUL    mem8
  10751. 110    DIV    mem8
  10752. 111    IDIV    mem8
  10753.  
  10754. Code Extention # 17
  10755. (First byte(s) = F7h)
  10756. Note: Usually 001 do same thing as 000, TEST mem,imm16
  10757. Field
  10758. OOO    Operation
  10759. 000    TEST    mem,imm16
  10760. 001
  10761. 010    NOT    mem
  10762. 011    NEG    mem
  10763. 100    MUL    mem
  10764. 101    IMUL    mem
  10765. 110    DIV    mem
  10766. 111    IDIV    mem
  10767.  
  10768. Code Extention # 18
  10769. (First byte(s) = FEh)
  10770. Field
  10771. OOO    Operation
  10772. 000    INC    mem8
  10773. 001    DEC    mem8
  10774. 010
  10775. 011
  10776. 100
  10777. 101
  10778. 110
  10779. 111
  10780.  
  10781. Code Extention # 19
  10782. (First byte(s) = FFh)
  10783. Field
  10784. OOO    Operation
  10785. 000    INC    mem
  10786. 001    DEC    mem
  10787. 010    CALL    NEAR    mem
  10788. 011    CALL    FAR    mem
  10789. 100    JMP    NEAR    mem
  10790. 101    JMP    FAR    mem
  10791. 110    PUSH    mem
  10792. 111
  10793.  
  10794. Code Extention # 20
  10795. (First byte(s) = 0FH,00H)
  10796. Field
  10797. OOO    Operation
  10798. 000    SLDT    mem                ; 286+
  10799. 001    STR    mem                ; 286+
  10800. 010    LLDT    mem                ; 286+
  10801. 011    LTR    mem                ; 286+
  10802. 100    VERR    mem                ; 286+
  10803. 101    VERW    mem                ; 286+
  10804. 110
  10805. 111
  10806.  
  10807. Code Extention # 21
  10808. (First byte(s) = 0Fh,01h)
  10809. Field
  10810. OOO    Operation
  10811. 000    SGDT    mem                ; 286+
  10812. 001    SIDT    mem                ; 286+
  10813. 010    LGDT    mem                ; 286+
  10814. 011    LIDT    mem                ; 286+
  10815. 100    SMSW    mem                ; 286+
  10816. 101
  10817. 110    LMSW    mem                ; 286+
  10818. 111    INVLPG    mem                ; 486+
  10819.  
  10820. Code Extention # 22
  10821. (First byte(s) = 0Fh,BAh)
  10822. Field
  10823. OOO    Operation
  10824. 000
  10825. 001
  10826. 010
  10827. 011
  10828. 100    BT    mem,imm8            ; 386+
  10829. 101    BTS    mem,imm8            ; 386+
  10830. 110    BTR    mem,imm8            ; 386+
  10831. 111    BTC    mem,imm8            ; 386+
  10832.  
  10833. Code Extention # 23
  10834. (First byte(s) = 0Fh,C7h)
  10835. Field
  10836. OOO    Operation
  10837. 000
  10838. 001    CMPXCHG8B  mem                ; Pentium
  10839. 010
  10840. 011
  10841. 100
  10842. 101
  10843. 110
  10844. 111
  10845.  
  10846. Code Extention # 24
  10847. (First byte(s) = 0Fh,AEh)
  10848. Field
  10849. OOO    Operation
  10850. 000    FXSAVE    mem512b                ; KNI/MMX2
  10851. 001    FXRSTOR    mem512b                ; KNI/MMX2
  10852. 010    LDMXCSR mem                ; KNI/MMX2
  10853. 011    STMXCSR mem                ; KNI/MMX2
  10854. 100
  10855. 101
  10856. 110
  10857. 111    SFENCE                    ; KNI/MMX2    (0F AE FF)
  10858.  
  10859. Code Extention # 25
  10860. (First byte(s) = 0Fh,0Dh)
  10861. Field
  10862. OOO    Operation
  10863. 000    PREFETCH                ; AMD 3D
  10864. 001    PREFETCHW                ; AMD 3D
  10865. 010
  10866. 011
  10867. 100
  10868. 101
  10869. 110
  10870. 111
  10871.  
  10872. Code Extention # 26
  10873. (First byte(s) = 0Fh,18h)
  10874. Field
  10875. OOO    Operation
  10876. 000    PREFETCHNTA mem                ; KNI/MMX2
  10877. 001    PREFETCHT0  mem                ; KNI/MMX2
  10878. 010    PREFETCHT1  mem                ; KNI/MMX2
  10879. 011    PREFETCHT2  mem                ; KNI/MMX2
  10880. 100
  10881. 101
  10882. 110
  10883. 111
  10884.  
  10885. Code Extension # 27
  10886. (First byte(s) = (F3h)    0Fh,C2h)        ; KNI/MMX2 All extension
  10887. .
  10888. Instruction have unusuall x86 format:
  10889. <0Fh> <C2h> <Postbyte> [<Memory>] <Nextbyte>
  10890. <F3h> <0Fh> <C2h> <Postbyte> [<Memory>] <Nextbyte>
  10891. .
  10892. Next byte       (w/o F3h Prefix)          (with F3 prefix)
  10893. 00        CMPEQPS       xmm,xmm/mem        CMPEQSS       xmm,xmm/mem
  10894. 01        CMPLTPS       xmm,xmm/mem        CMPLTSS       xmm,xmm/mem
  10895. 02        CMPLEPS       xmm,xmm/mem        CMPLESS       xmm,xmm/mem
  10896. 03        CMPUNORDPS xmm,xmm/mem        CMPUNORDSS xmm,xmm/mem
  10897. 04        CMPNEPS       xmm,xmm/mem        CMPNESS       xmm,xmm/mem
  10898. 05        CMPNLTPS   xmm,xmm/mem        CMPNLTSS   xmm,xmm/mem
  10899. 06        CMPNLEPS   xmm,xmm/mem        CMPNLESS   xmm,xmm/mem
  10900. 07        CMPORDPS   xmm,xmm/mem        CMPORDSS   xmm,xmm/mem
  10901.  
  10902. ------------------------------------------------
  10903. APPENDIX  F1  FLOATING POINT OPCODES
  10904.  
  10905. ESC 0  (First byte = D8h)
  10906.     ==========================
  10907.     ESCAPE 000    MMRRRMMM
  10908.     ==========================
  10909.         Operation
  10910. RRR    If MM<>11    If MM=11
  10911. 000    FADD  mem32r    FADD    ST,ST(i)
  10912. 001    FMUL  mem32r    FMUL    ST,ST(i)
  10913. 010    FCOM  mem32r    FCOM    ST(i)
  10914. 011    FCOMP mem32r    FCOMP    ST(i)
  10915. 100    FSUB  mem32r    FSUB    ST,ST(i)
  10916. 101    FSUBR mem32r    FSUBR    ST,ST(i)
  10917. 110    FDIV  mem32r    FDIV    ST,ST(i)
  10918. 111    FDIVR mem32r    FDIVR    ST,ST(i)
  10919.  
  10920. ESC 1  (First byte = D9h)
  10921.     ==========================
  10922.     ESCAPE 001    MMRRRMMM
  10923.     ==========================
  10924.         Operation
  10925. RRR    If MM<>11    If MM=11
  10926. 000    FLD    mem32r    FLD    ST(i)
  10927. 001    empty        FXCH    ST(i)
  10928. 010    FST    mem32r    See Table marked ESC1-Extended codes
  10929. 011    FSTP   mem32r    FSTP    ST(i)
  10930. 100    FLDENV mem    See Table marked ESC1-Extended codes
  10931. 101    FLDCW  mem    See Table marked ESC1-Extended codes
  10932. 110    FSTENV mem    See Table marked ESC1-Extended codes
  10933. 111    FSTCW  mem    See Table marked ESC1-Extended codes
  10934.  
  10935. ESC1-Extended codes:
  10936.    \ RRR
  10937. MMM \    010    100    101    110    111
  10938. 000    FNOP    FCHS    FLD1    F2XM1    FPREM
  10939. 001        FABS    FLDL2T    FYL2X    FYL2XP1
  10940. 010            FLDL2E    FPTAN    FSQRT
  10941. 011            FLDPI    FPATAN    FSINCOS'
  10942. 100        FTST    FLDLG2    FXTRACT    FRNDINT
  10943. 101        FXAM    FLDLN2    FPREM1    FSCALE
  10944. 110            FLDZ    FDECSTP    FSIN'
  10945. 111                FINCSTP    FCOS'
  10946.  
  10947. ' means 387+  (include 287XL/XLT, 187!!!)
  10948.  
  10949. ESC 2  (First byte = DAh)
  10950.     ==========================
  10951.     ESCAPE 010    MMRRRMMM
  10952.     ==========================
  10953.         Operation
  10954. RRR    If MM<>11
  10955. 000    FIADD  mem32i
  10956. 001    FIMUL  mem32i
  10957. 010    FICOM  mem32i
  10958. 011    FICOMP mem32i
  10959. 100    FISUB  mem32i
  10960. 101    FISUBR mem32i
  10961. 110    FIDIV  mem32i
  10962. 111    FIDIVR mem32i
  10963.  
  10964. Note: P6
  10965. DA C0+i     FCMOVB     ST0,STi
  10966. DA C8+i     FCMOVE     ST0,STi
  10967. DA D0+i     FCMOVBE ST0,STi
  10968. DA D8+i     FCMOVU     ST0,STi
  10969.  
  10970. ESC 3  (First byte = DBh)
  10971.     ==========================
  10972.     ESCAPE 011    MMRRRMMM
  10973.     ==========================
  10974.         Operation
  10975. RRR    If MM<>11
  10976. 000    FILD   mem32i
  10977. 001
  10978. 010    FIST   mem32i
  10979. 011    FISTP  mem32i
  10980. 100
  10981. 101    FLD    mem80r
  10982. 110
  10983. 111    FSTP   mem80r
  10984.  
  10985. So,If MM=11 we have next command (first byte = DBh)
  10986. Mnemonic    Second byte of code
  10987. FNENI        E0H    (8087 only, others do nothing)
  10988. FNDISI        E1H    (8087 only, others do nothing)
  10989. FNCLEX        E2H
  10990. FNINIT        E3H
  10991. FSETPM        E4H    (287s only)
  10992. FRSTPM        E5H    (287XL/XLT only)
  10993. FSTB0        E8H    (IIT)
  10994. FSTB2        EAH    (IIT)
  10995. FSTB1        EBH    (IIT)
  10996. F4X4        F1H    (IIT)
  10997. FRINT2        FCH    (Cyrix)
  10998. FUCOMI     ST0,STi E8H+i     (P6)
  10999. FCMOVNB     ST0,STi C0H+i     (P6)
  11000. FCMOVNE     ST0,STi C8H+i     (P6)
  11001. FCMOVNBE ST0,STi D0H+i     (P6)
  11002. FCMOVNU     ST0,STi D8H+i     (P6)
  11003. FCOMPI     ST0,STi F0H+i     (P6)
  11004.  
  11005. ESC 4  (First byte = DCh)
  11006.     ==========================
  11007.     ESCAPE 100    MMRRRMMM
  11008.     ==========================
  11009.         Operation
  11010. RRR    If MM<>11    If MM=11
  11011. 000    FADD  mem64r    FADD    ST(i),ST
  11012. 001    FMUL  mem64r    FMUL    ST(i),ST
  11013. 010    FCOM  mem64r    FCOM    ST(i)
  11014. 011    FCOMP mem64r    FCOMP    ST(i)
  11015. 100    FSUB  mem64r    FSUB    ST(i),ST
  11016. 101    FSUBR mem64r    FSUBR    ST(i),ST
  11017. 110    FDIV  mem64r    FDIV    ST(i),ST
  11018. 111    FDIVR mem64r    FDIVR    ST(i),ST
  11019.  
  11020. ESC 5  (First byte = DDh)
  11021.     ==========================
  11022.     ESCAPE 101    MMRRRMMM
  11023.     ==========================
  11024.         Operation
  11025. RRR    If MM<>11    If MM=11
  11026. 000    FLD    mem64r    FFREE  ST(i)
  11027. 001            FXCH   ST(i)
  11028. 010    FST    mem64r    FST    ST(i)
  11029. 011    FSTP   mem64r    FSTP   ST(i)
  11030. 100    FNRSTOR mem
  11031. 101
  11032. 110    FNSAVE    mem    FUCOM  ST(i)
  11033. 111    FSTSW    mem    FUCOMP ST(i)
  11034.  
  11035. Note: FRICHOP have opcode (DDh FCh) (Cyrix)
  11036.  
  11037. ESC 6  (First byte = DEh)
  11038.     ==========================
  11039.     ESCAPE 110    MMRRRMMM
  11040.     ==========================
  11041.         Operation
  11042. RRR    If MM<>11    If MM=11
  11043. 000    FIADD  mem16i    FADDP    ST(i),ST
  11044. 001    FIMUL  mem16i    FMULP    ST(i),ST
  11045. 010    FICOM  mem16i    FCOMP    ST(i),ST
  11046. 011    FICOMP mem16i
  11047. 100    FISUB  mem16i    FSUBP    ST(i),ST
  11048. 101    FISUBR mem16i    FSUBRP    ST(i),ST
  11049. 110    FIDIV  mem16i    FDIVP    ST(i),ST
  11050. 111    FIDIVR mem16i    FDIVRP    ST(i),ST
  11051.  
  11052. Note: FCOMPP have opcode (DEh D9h) (Intel and all)
  11053.  
  11054. ESC 7  (First byte = DFh)
  11055.     ==========================
  11056.     ESCAPE 111    MMRRRMMM
  11057.     ==========================
  11058.         Operation
  11059. RRR    If MM<>11    If MM=11
  11060. 000    FILD   mem16i    FFREE  ST(i)
  11061. 001            FXCH   ST(i)
  11062. 010    FIST   mem16i    FST    ST(i)
  11063. 011    FISTP  mem16i    FSTP   ST(i)
  11064. 100    FBLD   mem80b
  11065. 101    FILD   mem64i
  11066. 110    FBSTP  mem80b
  11067. 111    FISTP  mem64i
  11068.  
  11069. Note: Next Instruction have opcodes:
  11070. Mnemonic    Opcode
  11071. FNSTSW    AX    DFh E0h      (287+)
  11072. FNSTDW    AX    DFh E1h      (387SL Mobile)
  11073. FSTSG    AX    DFh E2h      (387SL Mobile)
  11074. FRINEAR        DFh FCh      (Cyrix)
  11075. FUCOMIP ST0,STi DFH E8H+i (P6)
  11076. FCOMIP    ST0,STi DFH F0H+i (P6)
  11077.  
  11078. ------------------------------------------
  11079. APPENDIX G
  11080.  
  11081. BUGS & CPU IDENTIFICATION INFO
  11082.  
  11083. 1) How to separate i386SX and i386DX
  11084.    (Cx486SLC and Cx486DLC)
  11085.    Note:  With 386DX type CPU possible to used
  11086.       287 class NPX, and bit 4 in CR0
  11087.       ET - Extention Type on DX we may to
  11088.       clear to 0, but for SX and REAL 486
  11089.       this bit always 1.
  11090.    Routine:
  11091.     mov    eax,cr0
  11092.     push    eax
  11093.     and    al,0efh
  11094.     mov    cr0,eax
  11095.     mov    eax,cr0
  11096.     test    al,10h
  11097.     pop    eax
  11098.     mov    cr0,eax
  11099.     jne    SX/SLC
  11100.     jmp    DX/DLC
  11101.  
  11102. 2) How to separate i486SX and i487SX/i486DX/DX2 etc
  11103.     Routine:
  11104. memory_location    DW    ?
  11105.     mov    memory_location,0
  11106.     fninit
  11107.     fstcw    memory_location
  11108.     cmp    memory_location,037Fh
  11109.     jz    i486SX
  11110.     jmp    i486DX/DX2etc/i487SX
  11111.  
  11112. 3) How to separate Cyrix's CPUs and other
  11113.        Be sure that Your CPU no Pentium before
  11114.        UMOV executed on Intel and other in
  11115.        Non SM modes as MOV.
  11116.        But Cyrix executed this instruction as
  11117.        Double NOP, and never generate INT 6.
  11118.        So.
  11119. Mem_Loc    DW  1
  11120.     xor    ax,ax
  11121.     umov    ax,Mem_Loc
  11122.     or    ax,ax
  11123.     jz    Cyrix
  11124.     jmp    No_Cyrix
  11125.  
  11126. 4) Standart Way: Part 1
  11127.    (Intel recomended this way)
  11128.  
  11129.     pushf
  11130.     pop    ax
  11131.     and    ax,0fffh    ; Clear bits 15..12
  11132.     push    ax
  11133.     popf
  11134.     pushf
  11135.     pop    ax
  11136.     and    ax,0f000h    ; Is bits 15..12=0 ?
  11137.     jz    286_CPU
  11138.     and    ax,8000h    ; Is bit 15=0
  11139.     jz    386_and_Higher
  11140.     jmp    86_88and186_186etc
  11141.  
  11142. 5) How separate 86/88, 186/188 and NECs
  11143.  
  11144.     mov    ax,1
  11145.     mov    cl,33
  11146.     shl    ax,cl
  11147.     jnz    186_188
  11148.     pusha        ; Executed on 8086/8088 as JMP $+2
  11149.     stc
  11150.     jc    NECs
  11151.     jmp    86_88
  11152.  
  11153. 6) Non CMOS 8086/88 execute command MOV CS,xxxx (Opcode 8Eh ...)
  11154.    CMOS 80C86/88 ignore it.
  11155.  
  11156. 7) Then Invalid Opcode NEC/Sony V40/V50 do INT 6
  11157.                NEC/Sony V20/V30 don't.
  11158.  
  11159. 8) Remember POP CS instruction on non-CMOS 8086/8088.
  11160.  
  11161. 9) PUSH SP
  11162.    286 placed in stack new value of SP
  11163.    86/88 old.
  11164.  
  11165. 10) Best way to Reset 286+ in Real Mode:
  11166.     mov      sp,1        (LOW BOUND)
  11167.     push  smth
  11168.  
  11169.     note:
  11170.      mov sp,ffffh    (HIGH BOUND)
  11171.      pop smth
  11172.     caused non Stack Fault, but GPF.
  11173.  
  11174. 11) Maximal Length of Instructian
  11175.     86: N/R
  11176.     286:  10 byte
  11177.     386+: 15 byte
  11178.  
  11179. 12) UMC Chips Detection (UMC U486SX, for other use CPUID)
  11180.     db    64h,0dbh    ; look like "SETALC FS:", but it none
  11181.     cmp eax,0ab6b1b07h
  11182.     je    u486SX
  11183.     jne Other
  11184.  
  11185. 13) MSW on 386/486
  11186.     On 386 MSR reserved bits = 1, so Real Mode 386  usually MSW = FFF0
  11187.                      Real Mode 486+ usually MSW = 0010
  11188.     smsw ax
  11189.     and     ah,ah
  11190.     jnz     cpu_386
  11191.     jz     cpu_486_and_more
  11192.  
  11193. 14) Selectors PUSH
  11194.     486 write 2 bytes to stack and ADD ESP,4
  11195.     Pentium Write all 4 bytes (and two of it are zero)
  11196.     (The same situation, then pushing 16-bit error code on exception)
  11197.  
  11198. 15)  TSS I/O Map Addressing
  11199.      Then I/O Map Base Address in TSS contain for example FFFFh,
  11200.      (don't forget TSS Limit)
  11201.      i486 wrap around segment and access invalid address near start of TSS.
  11202.      Pentium caused GPF.
  11203.  
  11204. 16)  Prefetcher
  11205.      up to 486 and 486 then instruction fetched to prefetcher and we write
  11206.      into memory area, where this instruction placed, will be execute
  11207.      already-prefetched command, but non-new.
  11208.      Pentium flush prefetcher, when detect modify of fetched cache line,
  11209.      so, for avoid this flush use different linear addresses for modify.
  11210.  
  11211.       CPU    Size_of_prefetch_queue        Number_of_empty_bytes_in
  11212.             (bytes)            queue_needed_for_initiate
  11213.                         prefetch_cycle
  11214.     8086/186/V20    6                 2
  11215.     8088/188/V30    4                 1
  11216.     286            6                 2
  11217.     386SX        16                 2
  11218.     386DX        16                 4
  11219.  
  11220. 17)   DR4/DR5 :))
  11221.       on 486 then accessing DR4/DR5  CPU accessed DR6/DR7.
  11222.       on Pentium if CR4.DE=0 the same situation as on 486,
  11223.       but if CR4.DE=1 then MOV from/to DR4/DR5 caused GPF.
  11224.  
  11225. 18)   NexGen Nx586
  11226.       On Pentium and 486 we cannot set ET flag in CR0.
  11227.       We may set ET flag in CR0.
  11228.       (On 386 we may set this flag too).
  11229.  
  11230. 19)   IDIV
  11231.       if result of IDIV will be 80h (byte IDIV) or 8000h (word IDIV)
  11232.       86/88 caused INT 0 - Division by zero,
  11233.       on 286+ 80h/8000h keeps as result and no exception
  11234.  
  11235. 20)   Division by zero
  11236.       On 86/88 pointer in stack then caused Division by zero
  11237.       pointed to DIV/IDIV instruction,
  11238.       on 286+ pointed to next instruction.
  11239.  
  11240. 21)   FPU Exception
  11241.       So, then FPU command with prefixes caused exception
  11242.       on 86/88 pointer to failed instruction on stack pointed to ESC command,
  11243.       on 386+ pointed to one of prefixes before ESC.
  11244.  
  11245. 22)   String commands
  11246.       if while 86/88 execute string instruction interrupt caused,
  11247.       CPU end execute instruction and goto next instruction,
  11248.       CX,SI and DI have values after last complete iteration
  11249.       To avoid it, use:
  11250.     pushf
  11251.     cli
  11252.     rep STRING
  11253.     popf
  11254.  
  11255. 23)   How to separate C&T 386 CPU form other (AMD,Intel)
  11256.     (C&T none have POPAD bug, but Intel and AMD have)
  11257.     mov    esi,32
  11258.     mov    eax,12345678h
  11259. loop:
  11260.     mov    ebx,eax
  11261.     mov    edx,0
  11262.     mov    esi,0
  11263.     pushad
  11264.     popad
  11265.     mov    ecx,[edx+edi]
  11266.     cmp    eax,ebx
  11267.     jnz    AMD_Intel
  11268.     rol    eax,1
  11269.     dec    esi
  11270.     jnz    loop
  11271.     jmp    C_T_CPUs
  11272.  
  11273. ------------------------------------------------
  11274. APPENDIX H
  11275. Internal Names Of Processors
  11276.  
  11277. (Intel)
  11278. P9    i386SX
  11279. P4    i486DX
  11280. P4S    i486SX
  11281. P23S    i487SX
  11282. P23T    OverDrive for PGA(169)
  11283. P4T    OverDrive for PGA(168)
  11284. P24S    i486DX2
  11285. P24T    Pentium OverDrive for  i486DX2 socket 3 (Vcc=5V,core=3V).
  11286. P24CT    Pentium OverDrive for Socket 3 (Vcc=3V)
  11287. P5    Pentium-60,66
  11288. P5T    Overdrive for P5 socket (120/133 MHz).
  11289. P54C    Pentium-90,100,75 x1.5 usually with APIC and Multiprocessing features
  11290. P54CS    Pentium-120,133      x2   with reduced APIC and multipr. features
  11291. P55C    Pentium w/MMX
  11292. P54LM    Pentium P54C with 2.9V (for Notebooks)
  11293. P24C    IntelDX4
  11294. P24D    i486DX2 with WB cache (IntelDX2 (tm) WriteBack Enhanced)
  11295. P54M    Overdrive ( include to P54C but P54C work too)
  11296. P6    Pentium Pro  (no comments)
  11297. P6T    Pentium Pro OverDrive (for extended Pentium Sockets)
  11298. P7    "Merced"  (IA-64, VLIW command set "Tahoe")
  11299. P54CSQ    3xCLK Pentiums P120 etc.
  11300. P54CSLM P54CS with Low Power.
  11301. P6L    Pentium II "Klamath" (w/o L2 build-in cache, with IA MMX)
  11302.     "Katmai"  (IA MMX2, 100MHz system bus)
  11303.     "Deschutes"  (High-tech "Klamath" for Mobile computers)
  11304.     "Celeron"   ("Klamath" w/o L2 cache)
  11305. P68    "Willamette" (High-tech "Pentium Pro")
  11306.     "Xeon"        (Slot 2, IA MMX2)
  11307.  
  11308. (Cyrix)
  11309. M5    Cx486S/S2
  11310. M6    Cx486D/D2
  11311. C6    Cx487D
  11312. M7    Cx486DX/Cx486DX2
  11313. M8    Cx486DX4
  11314. M1    Cx6x86
  11315. M1SC    Cx5x86
  11316. M1R    Cx6x86L     (0.35 mkm, reduced due size)
  11317. M2    Cx6x86MX
  11318. M3
  11319.     MediaGX
  11320.  
  11321. (AMD)
  11322. SSA/5    Am5k86 early series (K5 with big due size and with reduced some
  11323.     features, 'cos don't work).
  11324. K5    Am5k86
  11325. K6    Am6k86 (IA MMX support)
  11326.  
  11327. -------------------------------------------------
  11328. APPENDIX  I    FORMAT    OF DEBUG CONTROL REGISTERS (DR6/DR7)
  11329.  
  11330.    +---------+
  11331.    |   DR6   |
  11332.    +---------+
  11333.  
  11334.     [Am386xx/i386xx/i486xx/Am486xx]
  11335.     3322222222221111 1 1 1 111
  11336.     1098765432109876 5 4 3 210987654 3 2 1 0
  11337.     ----------------------------------------
  11338.     0000000000000000 B B B 000000000 B B B B
  11339.              T S D         3 2 1 0
  11340.     ----------------------------------------
  11341.  
  11342.     [Intel Pentium]
  11343.     3322222222221111 1 1 1 111
  11344.     1098765432109876 5 4 3 210987654 3 2 1 0
  11345.     ----------------------------------------
  11346.     1111111111111111 B B B 111111111 B B B B
  11347.              T S D         3 2 1 0
  11348.     ----------------------------------------
  11349.  
  11350.     [Cyrix Cx486DX,TI 486SXLC, TI 486SLC/e]
  11351.     3322222222221111 1 1 1 111
  11352.     1098765432109876 5 4 3 210987654 3 2 1 0
  11353.     ----------------------------------------
  11354.     1111111111111111 B B 0 011111111 B B B B
  11355.              T S         3 2 1 0
  11356.     ----------------------------------------
  11357.  
  11358.     [TI 486SXL/Cx486SLC]
  11359.     3322222222221111 1 1 1 111
  11360.     1098765432109876 5 4 3 210987654 3 2 1 0
  11361.     ----------------------------------------
  11362.     1111111111111111 B B 1 011111111 B B B B
  11363.              T S         3 2 1 0
  11364.     ----------------------------------------
  11365.  
  11366.     [IBM 486SLC2]
  11367.     3322222222221111 1 1 1 1 11
  11368.     1098765432109876 5 4 3 2 10987654 3 2 1 0
  11369.     -----------------------------------------
  11370.     0000000000000000 B B B B 00000000 B B B B
  11371.              T S D K      3 2 1 0
  11372.     ----------------------------------------
  11373.  
  11374.     [AMD Am486SXLV/Am386DXLV/Am386SXLV]
  11375.     3322222222221111 1 1 1 1 11
  11376.     1098765432109876 5 4 3 2 10987654 3 2 1 0
  11377.     -----------------------------------------
  11378.     0000000000000000 B B B S 00000000 B B B B
  11379.              T S D M      3 2 1 0
  11380.                    M
  11381.                    S
  11382.     ----------------------------------------
  11383.  
  11384.     [Cyrix Cx6x86] [Cx6x86MX]
  11385.     3322222222221111 1 1 1 1 11
  11386.     1098765432109876 5 4 3 2 10987654 3 2 1 0
  11387.     -----------------------------------------
  11388.     0000000000000000 B B 0 0 11111111 B B B B
  11389.              T S          3 2 1 0
  11390.     ----------------------------------------
  11391.  
  11392.  BT  - Debug Trap due to Task Switch
  11393.  BS  - Debug Trap due to Single-Step
  11394.  BD  - Debug Fault due to attemped registeracess when GD bit set
  11395.  BK  - Debug Trap due to ICE
  11396.       This bit set if exception 1 will invoked due to occurence of
  11397.       ICEMD interrupt or ICEBP software breakpoint.
  11398. SMMS - SMM Status
  11399.     if = 1 SMM is entered
  11400.  B3  - Debug fault/trap due to Breakpoint # 3
  11401.  B2  - Debug fault/trap due to Breakpoint # 2
  11402.  B1  - Debug fault/trap due to Breakpoint # 1
  11403.  B0  - Debug fault/trap due to Breakpoint # 0
  11404.  
  11405.    +--------+
  11406.    |  DR7   |
  11407.    +--------+
  11408.  
  11409.     [Am386xx/i386xx/i486xx/Am486xx]
  11410.     [TI486SXL/Cx486SLC]
  11411.     33 22 22 22 22 22 11 11 11 1 111
  11412.     10 98 76 54 32 10 98 76 54 3 210 9 8 7 6 5 4 3 2 1 0
  11413.     ----------------------------------------------------
  11414.     LL RR LL RR LL RR LL RR 00 G 000 G L G L G L G L G L
  11415.     EE // EE // EE // EE //       D     E E 3 3 2 2 1 1 0 0
  11416.     NN WW NN WW NN WW NN WW
  11417.     33 33 22 22 11 11 00 00
  11418.     ----------------------------------------------------
  11419.  
  11420.     [Pentium/Cx486DX/Cx486DX2/Cx486DX4]
  11421.     [TI486SLC/e / TI486SXLC/Cx6x86] [Cx6x86MX]
  11422.     33 22 22 22 22 22 11 11 11 1 111
  11423.     10 98 76 54 32 10 98 76 54 3 210 9 8 7 6 5 4 3 2 1 0
  11424.     ----------------------------------------------------
  11425.     LL RR LL RR LL RR LL RR 00 G 001 G L G L G L G L G L
  11426.     EE // EE // EE // EE //       D     E E 3 3 2 2 1 1 0 0
  11427.     NN WW NN WW NN WW NN WW
  11428.     33 33 22 22 11 11 00 00
  11429.     ----------------------------------------------------
  11430.  
  11431.     [IBM486SLC2]
  11432.     33 22 22 22 22 22 11 11 1 1 1 1 1 1
  11433.     10 98 76 54 32 10 98 76 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  11434.     -------------------------------------------------------
  11435.     LL RR LL RR LL RR LL RR T T G T G 0 G L G L G L G L G L
  11436.     EE // EE // EE // EE //    T B D P M   E E 3 3 2 2 1 1 0 0
  11437.     NN WW NN WW NN WW NN WW
  11438.     33 33 22 22 11 11 00 00
  11439.     -------------------------------------------------------
  11440.  
  11441.     [Am486SXLV/Am386DXLV/Am386SXLV]
  11442.     33 22 22 22 22 22 11 11 111 1 11
  11443.     10 98 76 54 32 10 98 76 543 2 10 9 8 7 6 5 4 3 2 1 0
  11444.     -----------------------------------------------------
  11445.     LL RR LL RR LL RR LL RR 000 S 00 G L G L G L G L G L
  11446.     EE // EE // EE // EE //        M     E E 3 3 2 2 1 1 0 0
  11447.     NN WW NN WW NN WW NN WW        I
  11448.     33 33 22 22 11 11 00 00        E
  11449.     ----------------------------------------------------
  11450.  
  11451.     [Am486xx]
  11452.     33 22 22 22 22 22 11 11 111111
  11453.     10 98 76 54 32 10 98 76 543210 9 8 7 6 5 4 3 2 1 0
  11454.     ----------------------------------------------------
  11455.     LL RR LL RR LL RR LL RR 000000 G L G L G L G L G L
  11456.     EE // EE // EE // EE //           E E 3 3 2 2 1 1 0 0
  11457.     NN WW NN WW NN WW NN WW
  11458.     33 33 22 22 11 11 00 00
  11459.     ----------------------------------------------------
  11460.  
  11461. LENi    - Length of Breakpoint
  11462.         00 - byte
  11463.         01 - word
  11464.         10 - undefined
  11465.         11 - dword
  11466. R/Wi    - Reaw/Write Instructions Enable
  11467.         00 - Instruction Execute cause Debug Interrupt
  11468.         01 - Data Writes only
  11469.         10 - I/O Reads or Writes
  11470.         11 - Data Reads or Writes
  11471. GD    - Global Debug Register Access Protect
  11472.         INT 1 will be caused if any instructions will be read/write
  11473.         DRs. This bit cleared when invoking Debug Exception.
  11474. GE    - Global Exact
  11475.         Any data breakpoint traps will be reported exactly after
  11476.         competition of the instruction that caused the operand
  11477.         transfer.
  11478. LE    - Local Exact  (Cleared on Task Switches)
  11479.         Note: 486+ always does exact data breakpoint matches,
  11480.         regardless of GE/LE bits. But 386 not.
  11481. G3    - Global Enable Breakpoint # 3
  11482. L3    - Local Enable Breakpoint  # 3    (Cleared on Task Switches)
  11483. G2    - Global Enable Breakpoint # 2
  11484. L2    - Local Enable Breakpoint  # 2    (Cleared on Task Switches)
  11485. G1    - Global Enable Breakpoint # 1
  11486. L1    - Local Enable Breakpoint  # 1    (Cleared on Task Switches)
  11487. G0    - Global Enable Breakpoint # 0
  11488. L0    - Local Enable Breakpoint  # 0    (Cleared on Task Switches)
  11489. TT    - Enable Task Trace Messages    (to External ICE hardware)
  11490. TB    - Enable Branch Trace Messages    (to External ICE hardware)
  11491. TP    - Exception 1 Handler Entry Convention
  11492.         if TP=0 exception 1 will interrupt 1 in user address space
  11493.         if TP=1 exception 1 will enter ICE mode
  11494. GM    - Enable Global Mapping
  11495.         if =1 Enable Mapping user memory addresses into ICE space.
  11496.         (Paging Must be disabled)
  11497. SMIE    - Software SMI Enable
  11498.         if = 1 enable
  11499.  
  11500. Note:
  11501.     DR7: Undocument features on Intel's CPUs.
  11502.         see IBM 486SLC2. All this bits in DR7 exist on Intel CPUs,
  11503.         but where thay are undocument. (bits 15,14,12).
  11504.  
  11505. -------------------------------------------------
  11506. APPENDIX  I    FORMAT    OF DEBUG DATA REGISTERS (except DR0-DR5)
  11507.  
  11508.    +---------+     +---------+
  11509.    |   DR4   |     |   DR5   |
  11510.    +---------+     +---------+
  11511.  
  11512. DR4 and DR5 physically not exist, but then You accessing it using
  11513. MOV from/to DR, thay are aliasing to DR6,DR7.
  11514.  
  11515.    +---------+
  11516.    |   DR3   |
  11517.    +---------+
  11518.  
  11519.     [386+]
  11520.     3322222222221111111111
  11521.     10987654321098765432109876543210
  11522.     --------------------------------
  11523.       BREAKPOINT_3_LINEAR_ADDRESS
  11524.     --------------------------------
  11525.  
  11526.    +---------+
  11527.    |   DR2   |
  11528.    +---------+
  11529.  
  11530.     [386+]
  11531.     3322222222221111111111
  11532.     10987654321098765432109876543210
  11533.     --------------------------------
  11534.       BREAKPOINT_2_LINEAR_ADDRESS
  11535.     --------------------------------
  11536.  
  11537.    +---------+
  11538.    |   DR1   |
  11539.    +---------+
  11540.  
  11541.     [386+]
  11542.     3322222222221111111111
  11543.     10987654321098765432109876543210
  11544.     --------------------------------
  11545.       BREAKPOINT_1_LINEAR_ADDRESS
  11546.     --------------------------------
  11547.  
  11548.    +---------+
  11549.    |   DR0   |
  11550.    +---------+
  11551.  
  11552.     [386+]
  11553.     3322222222221111111111
  11554.     10987654321098765432109876543210
  11555.     --------------------------------
  11556.       BREAKPOINT_0_LINEAR_ADDRESS
  11557.     --------------------------------
  11558.  
  11559. -------------------------------------------------
  11560. APPENDIX  K    FORMAT  OF CACHE TEST REGISTER  (TR4/TR5/TR3)
  11561.  
  11562.  +-------+
  11563.  |  TR4     |
  11564.  +-------+
  11565.  
  11566.     [i486xx/Cx486xx]
  11567.     332222222222111111111 1
  11568.     109876543210987654321 0 987 6543 210
  11569.     -------------------------------------
  11570.     TTTTTTTTTTTTTTTTTTTTT V LLL VVVV %%%
  11571.     AAAAAAAAAAAAAAAAAAAAA    RRR AAAA
  11572.     GGGGGGGGGGGGGGGGGGGGG    UUU LLLL
  11573.                     IIII
  11574.                     DDDD
  11575.     --------------------------------------
  11576.  
  11577.     [Cx486SXL/e]
  11578.     3322222222221111111111
  11579.     10987654321098765432109 8 7 6543 210
  11580.     -------------------------------------
  11581.     TTTTTTTTTTTTTTTTTTTTTTT % L VVVV 000
  11582.     AAAAAAAAAAAAAAAAAAAAAAA      R AAAA
  11583.     GGGGGGGGGGGGGGGGGGGGGGG      U LLLL
  11584.                     IIII
  11585.                     DDDD
  11586.     -------------------------------------
  11587.  
  11588.     [WB-Enhanced IntelDX2 WB-mode]
  11589.     332222222222111111111 1
  11590.     109876543210987654321 0 987 65432 1 0
  11591.     --------------------------------------
  11592.     TTTTTTTTTTTTTTTTTTTTT % LLL %%%%% V V
  11593.     AAAAAAAAAAAAAAAAAAAAA    RRR      H L
  11594.     GGGGGGGGGGGGGGGGGGGGG    UUU
  11595.     --------------------------------------
  11596.  
  11597.     [IntelDX4]
  11598.     33222222222211111111 1 1
  11599.     10987654321098765432 1 0 987 6543 210
  11600.     --------------------------------------
  11601.     TTTTTTTTTTTTTTTTTTTT % V LLL VVVV %%%
  11602.     AAAAAAAAAAAAAAAAAAAA     RRR AAAA
  11603.     GGGGGGGGGGGGGGGGGGGG     UUU LLLL
  11604.                      IIII
  11605.                      DDDD
  11606.     --------------------------------------
  11607.  
  11608.     [WB-Enhanced IntelDX4 WB-mode]
  11609.     33222222222211111111 11
  11610.     10987654321098765432 10 987 65432 10
  11611.     --------------------------------------
  11612.     TTTTTTTTTTTTTTTTTTTT %% LLL %%%%% V V
  11613.     AAAAAAAAAAAAAAAAAAAA    RRR      H L
  11614.     GGGGGGGGGGGGGGGGGGGG    UUU
  11615.     --------------------------------------
  11616.  
  11617.     [TI486SXL]
  11618.     3322222222221111111 111
  11619.     1098765432109876543 21098 7 6543 2 10
  11620.     --------------------------------------
  11621.     TTTTTTTTTTTTTTTTTTT %%%%% L VVVV V 00
  11622.     AAAAAAAAAAAAAAAAAAA      R AAAA A
  11623.     GGGGGGGGGGGGGGGGGGG      U LLLL L
  11624.                     IIII I
  11625.                     DDDD D
  11626.                      B
  11627.     --------------------------------------
  11628.  
  11629.     [AMD Enhanced 486 CPU with EXT=0]
  11630.     33222222222211111111 1 1
  11631.     10987654321098765432 1 0 987 6543 210
  11632.     --------------------------------------
  11633.     TTTTTTTTTTTTTTTTTTTT 0 V LLL VVVV %%%
  11634.     AAAAAAAAAAAAAAAAAAAA     RRR AAAA
  11635.     GGGGGGGGGGGGGGGGGGGG     UUU LLLL
  11636.                      IIII
  11637.                      DDDD
  11638.     --------------------------------------
  11639.  
  11640.     [AMD Enhanced 486 CPU with EXT=1]
  11641.     3 32 2 22 22 22 22 111111111 1
  11642.     1 09 8 76 54 32 10 987654321 0 987 6543 210
  11643.     --------------------------------------------
  11644.     % SS % SS SS SS SS %%%%%%%%% V LLL VVVV %%%
  11645.       TT   TT TT TT TT           RRR AAAA
  11646.       nn   33 22 11 00           UUU LLLL
  11647.                        IIII
  11648.                        DDDD
  11649.     --------------------------------------------
  11650.  
  11651.     [Cyrix Cx6x86]
  11652.     33222222222211111111 11
  11653.     10987654321098765432 1098 76 54 3210
  11654.     --------------------------------------
  11655.     TTTTTTTTTTTTTTTTTTTT %%%% MM MM MMMM
  11656.     AAAAAAAAAAAAAAAAAAAA      EE EE RRRR
  11657.     GGGGGGGGGGGGGGGGGGGG      SS SS UUUU
  11658.                   II II
  11659.                   UU LL
  11660.     --------------------------------------
  11661.  
  11662.     [Cyrix Cx6x86MX]
  11663.     3322222222221111111111
  11664.     109876543210987654321098765432 10
  11665.     ---------------------------------
  11666.     AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  11667.     DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
  11668.     DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
  11669.     RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
  11670.     ---------------------------------
  11671.  
  11672. VALUD    - dwords (or other size units) of Cache Line which Valid
  11673. LRU    - LRU
  11674. V    - is cache line entry valid
  11675. TAG    - Tag of cache line
  11676. VL,VH    - Define MESI state of line
  11677.         VH VL State
  11678.         1   1  M
  11679.         0   1  E
  11680.         1   0  S
  11681.         0   0  I
  11682. VALIDB    - Valid of Cache Line
  11683. STn    - State of Cache Line (MESI)
  11684. ST3    - State of 3rd dword of cache line (MESI)
  11685. ST2    - State of 2nd dword of cache line (MESI)
  11686. ST1    - State of 1st dword of cache line (MESI)
  11687. ST0    - State of 0   dword of cache line (MESI)
  11688.         00 - Invalid
  11689.         01 - Exclusive
  11690.         10 - Modified
  11691.         11 - Shared
  11692. MESIU    - Upper Sector of Cache Line MESI state
  11693.         00 - Modified
  11694.         01 - Shared
  11695.         10 - Exclusive
  11696.         11 - Invalid
  11697. MESIL    - Lower Sector of Cache Line MESI state
  11698.         00 - Modified
  11699.         01 - Shared
  11700.         10 - Exclusive
  11701.         11 - Invalid
  11702. MRU    - Used for Determinate LRU line
  11703. ADDR    - Physical Address of Cache Line
  11704.  
  11705.   +--------+
  11706.   |  TR5   |
  11707.   +--------+
  11708.  
  11709.     [i486xx/Am486xx/Cx486xx]
  11710.     332222222222111111111 1
  11711.     109876543210987654321 0987654 32 10
  11712.     -------------------------------------
  11713.     %%%%%%%%%%%%%%%%%%%%% SSSSSSS EE CC
  11714.                   EEEEEEE NN TT
  11715.                   TTTTTTT TT LL
  11716.     --------------------------------------
  11717.  
  11718.     [TI486SXL/e]
  11719.     33222222222211111111 11
  11720.     10987654321098765432 10987654 3 2 10
  11721.     --------------------------------------
  11722.     %%%%%%%%%%%%%%%%%%%% SSSSSSSS % E CC
  11723.                  EEEEEEEE    N TT
  11724.                  TTTTTTTT    T LL
  11725.     --------------------------------------
  11726.  
  11727.     [WB-Enhanced IndelDX2 WB-mode]
  11728.     332222222222111111 1 11 1
  11729.     109876543210987654 3 21 0987654 32 10
  11730.     ---------------------------------------
  11731.     %%%%%%%%%%%%%%%%%% S %% SSSSSSS EE CC
  11732.                L    EEEEEEE NN TT
  11733.                F    TTTTTTT TT LL
  11734.     --------------------------------------
  11735.  
  11736.     [IntelDX4]
  11737.     33222222222211111111 11
  11738.     10987654321098765432 10987654 32 10
  11739.     -------------------------------------
  11740.     %%%%%%%%%%%%%%%%%%%% SSSSSSSS EE CC
  11741.                  EEEEEEEE NN TT
  11742.                  TTTTTTTT TT LL
  11743.     --------------------------------------
  11744.  
  11745.     [WB-Enhanced IntelDX4 WB-mode]
  11746.     332222222222111111 1 1 11
  11747.     109876543210987654 3 2 10987654 32 10
  11748.     -------------------------------------
  11749.     %%%%%%%%%%%%%%%%%% S % SSSSSSSS EE CC
  11750.                L   EEEEEEEE NN TT
  11751.                F   TTTTTTTT TT LL
  11752.     -------------------------------------
  11753.  
  11754.     [TI486SXL]
  11755.     3322222222221111111 1 11
  11756.     1098765432109876543 2 10987654 32 10
  11757.     -------------------------------------
  11758.     %%%%%%%%%%%%%%%%%%% W SSSSSSSS EE CC
  11759.                 A EEEEEEEE NN TT
  11760.                 Y TTTTTTTT TT LL
  11761.     -------------------------------------
  11762.  
  11763.     [AMD Enhanced 486 in WT-mode]
  11764.     3322222222221111111 1 11
  11765.     1098765432109876543 2 10987654 32 10
  11766.     -------------------------------------
  11767.     %%%%%%%%%%%%%%%%%%% ( SSSSSSSS EE CC
  11768.                 S EEEEEEEE NN TT
  11769.                 E TTTTTTTT TT LL
  11770.                 T
  11771.                 )
  11772.     -------------------------------------
  11773.  
  11774.     [AMD Enhanced 486 in WB-mode]
  11775.     332222222222 1 11 1111 1 11
  11776.     109876543210 9 87 6543 2 10987654 32 10
  11777.     -------------------------------------
  11778.     %%%%%%%%%%%% E SS %%%% ( SSSSSSSS EE CC
  11779.              X TT      S EEEEEEEE NN TT
  11780.              T           E TTTTTTTT TT LL
  11781.                    T
  11782.                    )
  11783.     -------------------------------------
  11784.  
  11785.     [Cx6x86]
  11786.     332222222222111111 11 11
  11787.     109876543210987654 32 1098765 432 10
  11788.     -------------------------------------
  11789.     %%%%%%%%%%%%%%%%%% WW SSSSSSS EEE CC
  11790.                AA EEEEEEE NNN TT
  11791.                YY TTTTTTT TTT LL
  11792.     -------------------------------------
  11793.  
  11794.     [Cx6x86MX]
  11795.     33222222 2 222 1 111 1111 11
  11796.     10987654 3 210 9 876 5432 1098 76 54 32 10
  11797.     ------------------------------------------
  11798.     %%%%%%%% S %%% V MMM %%%% MMMM %% SS %% CC
  11799.          M     EEE      RRRR      EE    TT
  11800.          I     SSS      UUUU      TT    LL
  11801.              III
  11802.     ------------------------------------------
  11803.  
  11804. CTL    - Control (Select operation)
  11805.         00 -  Enable (Fill Buffer Write/Read Buffer Read)
  11806.         01 - Perform Cache Line Write
  11807.         10 - Perform Cache Line Read
  11808.         11 - Perform Cache Line Flush
  11809. ENT    - Select Entry for Operation
  11810. SET    - Select Set for Operation
  11811. SLF    -
  11812. WAY    - Select Way for Operation
  11813. ST    - State of set will be writing during write operation
  11814.         00 - Invalid
  11815.         01 - Exclusive
  11816.         10 - Modified
  11817.         11 - Shared
  11818. EXT    - Extension
  11819.         if EXT=0 bits 31..11 of TR4 contain TAG
  11820.         if EXT=1 bits 31..11 of TR4 contain STi
  11821. SMI    - SMI Address bit. Select separate/cachable SMI code/data space.
  11822. V,MESI    - Select Valid & MESI
  11823.         V  MESI    Description
  11824.         1  000     Modified
  11825.         1  001     Shared
  11826.         1  010     Exclusive
  11827.         0  011     Invalid
  11828.         1  100     Locked Valid
  11829.         0  111     Locked Invalid
  11830.         else     Undefined
  11831.  MRU    -  Used for determinate LRU.
  11832.  
  11833.   +-------+
  11834.   |  TR3  |
  11835.   +-------+
  11836.  
  11837.     [any,which support Cache Testing (all 486+)]
  11838.     3322222222221111111111
  11839.     10987654321098765432109876543210
  11840.     --------------------------------
  11841.     ___________CACHE_DATA___________
  11842.     --------------------------------
  11843.  
  11844. CACHE_DATA - Data which will be reading/writing to/from cache line part.
  11845.  
  11846. -------------------------------------------------
  11847. APPENDIX  L        FORMAT  OF BTB TEST REGISTER (TR1/TR2)
  11848.  
  11849. Note: This kind of registers present only on Cx6x86 and may be
  11850.       on Cx6x86MX.
  11851.  
  11852.  +-------+
  11853.  |  TR1     |
  11854.  +-------+
  11855.  
  11856.     [Cx6x86]
  11857.     3322222222221111111111
  11858.     10987654321098765432109876 543 210
  11859.     ----------------------------------
  11860.     ?????????????????????????? III ???
  11861.                    DDD
  11862.                    XXX
  11863.     ----------------------------------
  11864.  
  11865. IDX - Index of Register in BTB control space, which may be accessed via TR2.
  11866.  
  11867.  +-------+
  11868.  |  TR2     |
  11869.  +-------+
  11870.  
  11871.     [Cx6x86]
  11872.     3322222222221111111111
  11873.     10987654321098765432109876543210
  11874.     --------------------------------
  11875.     _____________DATA_______________
  11876.     --------------------------------
  11877.  
  11878. DATA - data which will be reading/writing from/to BTB control space registers.
  11879.  
  11880. Note: Refer to Appendix A5 for more details.
  11881.  
  11882. -------------------------------------------------
  11883. APPENDIX  K    FORMAT  OF TLB TEST REGISTER  (TR6/TR7)
  11884.  
  11885. Note: Pentium and Higher Intel CPUs not support Test registers (TRs) at all.
  11886.  
  11887.  +-------+
  11888.  |  TR6     |
  11889.  +-------+
  11890.  
  11891.     [i386xx] [i486xx] [TI486SXL]
  11892.     33222222222211111111 1 1
  11893.     10987654321098765432 1 0 9 8 7 6 5 4321 0
  11894.     -----------------------------------------
  11895.     LLLLLLLLLLLLLLLLLLLL V D D U U W W %%%% O
  11896.     AAAAAAAAAAAAAAAAAAAA     #   #     #    P
  11897.     DDDDDDDDDDDDDDDDDDDD
  11898.     DDDDDDDDDDDDDDDDDDDD
  11899.     RRRRRRRRRRRRRRRRRRRR
  11900.     -----------------------------------------
  11901.  
  11902.     [Cx6x86]
  11903.     33222222222211111111 1 1
  11904.     10987654321098765432 1 0 9 8 7 6 5 4 3 210
  11905.     ------------------------------------------
  11906.     LLLLLLLLLLLLLLLLLLLL V D D U U W W A A CCC
  11907.     AAAAAAAAAAAAAAAAAAAA     #   #     #   # MMM
  11908.     DDDDDDDDDDDDDDDDDDDD               DDD
  11909.     DDDDDDDDDDDDDDDDDDDD
  11910.     RRRRRRRRRRRRRRRRRRRR
  11911.     ------------------------------------------
  11912.  
  11913.     [Cx6x86MX]
  11914.     33222222222211111111 1 1
  11915.     10987654321098765432 1 0 9 8 7 6 5 4 3 210
  11916.     ------------------------------------------
  11917.     LLLLLLLLLLLLLLLLLLLL V D P U 0 W 0 A 0 CCC
  11918.     AAAAAAAAAAAAAAAAAAAA     G           MMM
  11919.     DDDDDDDDDDDDDDDDDDDD               DDD
  11920.     DDDDDDDDDDDDDDDDDDDD               222
  11921.     RRRRRRRRRRRRRRRRRRRR
  11922.     ------------------------------------------
  11923.  
  11924. LADDR - Linear Address
  11925.   V   - Valid bit for TLB entry
  11926.  D,D# - The Dirty Bit for/from TLB entry (Normal and Reverse)
  11927.  U,U# - The User/Supervisor bit for/from TLB Entry (Normal and Reverse)
  11928.  W,W# - The Read/Write bit for/from TLB entry (Normal and Reverse)
  11929.   OP  - Operation
  11930.         0 - TLB Write
  11931.         1 - TLB LookUp
  11932.  A,A# - The Accessed Bit (Normal and Reverse)
  11933.  CMD  - Array Command Select
  11934.         000 - Direct Write to main TLB
  11935.         001 - TLB lookup for an linear address in all arrays
  11936.         100 - Write to variable page size mask only
  11937.         110 - Write to variable page size, linear and physical addreses
  11938.         101 - Read variable page size and linear address.
  11939.         111 - Read variable page size cache physical and linear address
  11940.   PG  - Page Global bit
  11941.  CMD2 - Array Command Select
  11942.         Value  Description
  11943.         x00 - Write to L1 TLB
  11944.         x01 - Write to L2 TLB
  11945.         010 - Read from L1 TLB X-port
  11946.         011 - Read from L2 TLB X-port
  11947.         110 - Read from L1 TLB Y-port
  11948.         111 - Read from L2 TLB Y-port
  11949.  
  11950.  +-------+
  11951.  |  TR7     |
  11952.  +-------+
  11953.  
  11954.     [i386xx]
  11955.     33222222222211111111 11
  11956.     10987654321098765432 1098765 4    32 10
  11957.     -------------------------------------
  11958.     PPPPPPPPPPPPPPPPPPPP %%%%%%%  H RR %%
  11959.     HHHHHHHHHHHHHHHHHHHH          T EE
  11960.     YYYYYYYYYYYYYYYYYYYY        PP
  11961.     SSSSSSSSSSSSSSSSSSSS
  11962.     -------------------------------------
  11963.  
  11964.     [i486xx] [TI486SXL]
  11965.     33222222222211111111 1 1
  11966.     10987654321098765432 1 0 987 65 4 32 10
  11967.     ---------------------------------------
  11968.     PPPPPPPPPPPPPPPPPPPP P P LLL %% R RR %%
  11969.     HHHHHHHHHHHHHHHHHHHH C W RRR    P PP
  11970.     YYYYYYYYYYYYYYYYYYYY D T UUU    S //
  11971.     SSSSSSSSSSSSSSSSSSSS        / HH
  11972.                     H LL
  11973.                     I
  11974.     ---------------------------------------
  11975.  
  11976.     [Cx6x86]
  11977.     33222222222211111111 1 1
  11978.     10987654321098765432 1 0 987 6 5 4 3 210
  11979.     ----------------------------------------
  11980.     PPPPPPPPPPPPPPPPPPPP P P BBB % H H H %%%
  11981.     HHHHHHHHHHHHHHHHHHHH C W III   V D B
  11982.     YYYYYYYYYYYYYYYYYYYY D T
  11983.     SSSSSSSSSSSSSSSSSSSS
  11984.     ----------------------------------------
  11985.  
  11986.     [Cx6x86MX]
  11987.     33222222222211111111 1 1
  11988.     10987654321098765432 1 0 987 6 5 4 3 210
  11989.     ----------------------------------------
  11990.     PPPPPPPPPPPPPPPPPPPP P P SSS % H H % HHH
  11991.     HHHHHHHHHHHHHHHHHHHH C W EEE   1 2   SSS
  11992.     YYYYYYYYYYYYYYYYYYYY D T TTT         EEE
  11993.     SSSSSSSSSSSSSSSSSSSS             TTT
  11994.     ----------------------------------------
  11995.  
  11996.  PHYS  - Physiacl Address
  11997.   HT   - TLB Lookup Hit
  11998.   REP  - Replacement Pointer
  11999.   PCD  - Page Cache Disable
  12000.   PWT  - Page Write Throught
  12001.   LRU  - LRU
  12002. RPS/HI - Replacement Pointer Select (writes)/Hit Indication (LookUp)
  12003.  RP/HL - Replacement Pointer (writes)/Hit Location (LookUp)
  12004.   BI   - Cell Index for victim TLB and block cache operation.
  12005.   HV   - Victim TLB Hit
  12006.   HD   - Main TLB Hit
  12007.   HB   - Variable-size Paging Mechanism Hit
  12008.  SET   - L2 TLB Set Selection (0..5h)
  12009.   H1   - Hit in L1 TLB
  12010.   H2   - Hit in L2 TLB
  12011.  HSET  - L2 set selection when L2 TLB hit occures (0h..5h)
  12012.  
  12013. ----------------------------------------------------
  12014. APPENDIX  N   EFLAGS register format
  12015.  
  12016.   +---------+
  12017.   | EFLAGS  |
  12018.   +---------+
  12019.  
  12020.     [Pentium P5] [Pentium P54C] [IntelDX4] [Am5k86]
  12021.     [Pentium Pro] [Pentium II] [Am6k86] [Pentium w/MMX (P55C)]
  12022.     3322222222 2 2 1 1 1 1 1 1 11 1 1
  12023.     1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  12024.     -----------------------------------------------------
  12025.            I V V A V R     N IO O D I T S Z   A    P   C
  12026.     0000000000 D I I C M F 0 T PL F F F F F F 0 F 0 F 1 F
  12027.              P F
  12028.     -----------------------------------------------------
  12029.  
  12030.     [i486 SL Enhanced SX,DX,DX2] [IntelSX2] [Cx5x86]
  12031.     [UMC] [Cx6x86] [Cx6x86MX]
  12032.     3322222222 2 2 1 1 1 1 1 1 11 1 1
  12033.     1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  12034.     -----------------------------------------------------
  12035.            I     A V R     N IO O D I T S Z   A    P   C
  12036.     0000000000 D 0 0 C M F 0 T PL F F F F F F 0 F 0 F 1 F
  12037.     -----------------------------------------------------
  12038.  
  12039.     [i486 SX,DX,DX2] [OverDrive] [M5,M6,M7] [AMD Am486DX/DXL/DX2/DXL2 ] etc
  12040.     [IBM BL486DX/DX2] [Cx486SLC/DLC/SLC2/DLC2] [NexGen Nx586]
  12041.     3322222222 2 2 1 1 1 1 1 1 11 1 1
  12042.     1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  12043.     -----------------------------------------------------
  12044.              A V R     N IO O D I T S Z   A    P   C
  12045.     0000000000 0 0 0 C M F 0 T PL F F F F F F 0 F 0 F 1 F
  12046.     -----------------------------------------------------
  12047.  
  12048.     [i386 SX,DX,CX,EX]  [AMD Am386 ] [C&T 38600 ] etc
  12049.     [IBM 486SLC2]
  12050.     3322222222 2 2 1 1 1 1 1 1 11 1 1
  12051.     1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  12052.     -----------------------------------------------------
  12053.                V R     N IO O D I T S Z   A    P   C
  12054.     0000000000 0 0 0 0 M F 0 T PL F F F F F F 0 F 0 F 1 F
  12055.     -----------------------------------------------------
  12056.  
  12057.     [i376]
  12058.     3322222222 2 2 1 1 1 1 1 1 11 1 1
  12059.     1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  12060.     -----------------------------------------------------
  12061.                  R     N IO O D I T S Z   A    P   C
  12062.     0000000000 0 0 0 0 0 F 0 T PL F F F F F F 0 F 0 F 1 F
  12063.     -----------------------------------------------------
  12064.  
  12065.     [i286 and all clones]
  12066.     1 1 11 1 1
  12067.     5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  12068.     ------------------------------
  12069.       N IO O D I T S Z   A     P   C
  12070.     0 T PL F F F F F F 0 F 0 F 1 F
  12071.     ------------------------------
  12072.  
  12073.     [NEC/Sony V20/V30]
  12074.     1 1 1 1 1 1
  12075.     5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  12076.     -------------------------------
  12077.     M    O D I T S Z   A      P   C
  12078.     D 1 1 1 F F F F F F 0 F 0 F 1 F
  12079.     -------------------------------
  12080.  
  12081.     [80x186 ,EA,EB,EC,XL]  [8086/88 and all clones]
  12082.     1 1 1 1 1 1
  12083.     5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  12084.     -------------------------------
  12085.         O D I T S Z   A      P   C
  12086.     1 1 1 1 F F F F F F 0 F 0 F 1 F
  12087.     -------------------------------
  12088.  
  12089. Flags Summary:
  12090. ID   - Identification Flag
  12091. VIP  - Virtual Interrupt Pending
  12092. VIF  - Virtual Interrupt Flag
  12093. AC   - Align Check
  12094. VM   - Virtual 8086 Mode
  12095. RF   - Resume Flag
  12096. MD   - Mode Flag
  12097. NT   - Nested Task flag
  12098. IOPL - Input/Output Privelege Level
  12099. OF   - Overflow Flag
  12100. DF   - Direction Flag
  12101. IF   - Interrupt Flag
  12102. TF   - Trap Flag
  12103. SF   - Sign Flag
  12104. ZF   - Zero Flag
  12105. AF   - Auxiliary Carry Flag
  12106. PF   - Parity Flag
  12107. CF   - Carry Flag
  12108.  
  12109. ---------------------------------------------------
  12110. APPENDIX  O    OLD CONTROL REGISTERS FORMAT (CR0-CR3)
  12111.  
  12112.   +---------+
  12113.   |  CR0    |
  12114.   +---------+
  12115.  
  12116.     [Pentium P5] [Pentium P54C] [Pentium Pro]
  12117.     [Pentium II] [Pentium w/MMX]
  12118.     [Cx6x86MX] [Am6k86] [Am5k86]
  12119.     3 3 2 2222222221 1 1 1 111111
  12120.     1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  12121.     ---------------------------------------------
  12122.     P C N         A   W          N   T E M P
  12123.     G D W 0000000000 M 0 P 0000000000 E 1 S M P E
  12124.     ---------------------------------------------
  12125.  
  12126.     [IntelDX4] [486DX/DX2, IntelDX4 ]
  12127.     3 3 2 2222222221 1 1 1 111111
  12128.     1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  12129.     ---------------------------------------------
  12130.     P C N         A   W              T      M P
  12131.     G D W 0000000000 M 0 P 0000000000 * 1 S 1 P E
  12132.     ---------------------------------------------
  12133.  
  12134.     [Cx486SLC]
  12135.     3 3 2 2222222221 1 1 1 111111
  12136.     1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  12137.     ---------------------------------------------
  12138.     P C         A   W              T E M P
  12139.     G D 0 0000000000 M 0 P 0000000000 0 1 S M P E
  12140.     ---------------------------------------------
  12141.  
  12142.     [Cx486DLC]
  12143.     3 3 2 2222222221 1 1 1 111111
  12144.     1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  12145.     ---------------------------------------------
  12146.     P C N         A   W            E T E M P
  12147.     G D W 0000000000 M 0 P 0000000000 0 T S M P E
  12148.     ---------------------------------------------
  12149.  
  12150.     [Intel i486SX,SX2]
  12151.     3 3 2 2222222221 1 1 1 111111
  12152.     1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  12153.     ---------------------------------------------
  12154.     P C N         A   W              T E M P
  12155.     G D W 0000000000 M 0 P 0000000000 * 1 S M P E
  12156.     ---------------------------------------------
  12157.  
  12158.     [IBM 486SLC2]
  12159.     3 32222222222111 1 111111
  12160.     1 09876543210987 6 54321098765 4 3 2 1 0
  12161.     ---------------------------------------------
  12162.     P         W         T E M P
  12163.     G 00000000000000 P 0000000000  1 S M P E
  12164.     ---------------------------------------------
  12165.  
  12166.     [Intel i386SX]
  12167.     3 322222222221111111111
  12168.     1 09876543210987654321098765 4 3 2 1 0
  12169.     ---------------------------------------------
  12170.     P                   T E M P
  12171.     G 0000000000000000000000000  1 S M P E
  12172.     ---------------------------------------------
  12173.  
  12174.     [Intel i386DX]
  12175.     3 322222222221111111111
  12176.     1 09876543210987654321098765 4 3 2 1 0
  12177.     ---------------------------------------------
  12178.     P                 E T E M P
  12179.     G 0000000000000000000000000  T S M P E
  12180.     ---------------------------------------------
  12181.  
  12182.     [80286]
  12183.     Note: None CR0, but MSW
  12184.     111111
  12185.     543210987654 3 2 1 0
  12186.     ---------------------
  12187.              T E M P
  12188.     000000000000 S M P E
  12189.     ---------------------
  12190.  
  12191. PE - Protection Enable
  12192. MP - Monitor Processor
  12193. EM - Emulation
  12194. TS - Task Switch
  12195. ET - Extention Type
  12196. NE - Numeric Exception
  12197. WP - Write protect
  12198. AM - Align Mode
  12199. NW - No Write Throught
  12200. CD - Cache Disable
  12201. PG - Paging
  12202.  
  12203.     +--------+
  12204.     |  CR1   |
  12205.     +--------+
  12206.  
  12207. CR1 register not exist on x86 architecture. Usually aliased CR0.
  12208.  
  12209.     +--------+
  12210.     |  CR2   |
  12211.     +--------+
  12212.  
  12213.     [386+]
  12214.     3 322222222221111111111
  12215.     1 0987654321098765432109876543210
  12216.     ---------------------------------
  12217.      LAST_PAGE_FAULT_LINEAR_ADDRESS
  12218.     ---------------------------------
  12219.  
  12220.    +--------+
  12221.    |  CR3   |
  12222.    +--------+
  12223.  
  12224.     [Intel i386xx] [Cyrix Cx486SLC]
  12225.     33222222222211111111 11
  12226.     10987654321098765432 109876543210
  12227.     ---------------------------------
  12228.     PPPPPPPPPPPPPPPPPPPP %%%%%%%%%%%%
  12229.     DDDDDDDDDDDDDDDDDDDD
  12230.     BBBBBBBBBBBBBBBBBBBB
  12231.     RRRRRRRRRRRRRRRRRRRR
  12232.     ---------------------------------
  12233.  
  12234.     [Intel i486xx] [Cx6x86] [Cx6x86MX]
  12235.     [Pentium] [Pentium Pro] [Pentium II]
  12236.     [Pentium w/MMX]
  12237.     33222222222211111111 11
  12238.     10987654321098765432 1098765 4 3 210
  12239.     ------------------------------------
  12240.     PPPPPPPPPPPPPPPPPPPP %%%%%%% P P %%%
  12241.     DDDDDDDDDDDDDDDDDDDD         C W
  12242.     BBBBBBBBBBBBBBBBBBBB         D T
  12243.     RRRRRRRRRRRRRRRRRRRR
  12244.     ------------------------------------
  12245.  
  12246.     see APPENDIX
  12247.  
  12248. PDBR  - Page Directory Base Register
  12249.  PCD  - Page Cache Disable
  12250.  PWT  - Page Write Whrought
  12251.  
  12252. ---------------------------------------------------
  12253. APPENDIX  P   CR4 register format
  12254.  
  12255.    +-------+
  12256.    |  CR4  |
  12257.    +-------+
  12258.  
  12259.     [Katmai] [Deschutes]
  12260.     3322222222221111111111
  12261.     1098765432109876543210 9 8 7 6 5 4 3 2 1 0
  12262.     ------------------------------------------
  12263.                    F P P M P P D T P V
  12264.     0000000000000000000000 S C G C A S E S V M
  12265.                    R E E E E E   D I E
  12266.     ------------------------------------------
  12267.  
  12268.     [Pentium Pro] [Pentium II]
  12269.     3322222222221111111111
  12270.     10987654321098765432109 8 7 6 5 4 3 2 1 0
  12271.     -----------------------------------------
  12272.                 P P M P P D T P V
  12273.     00000000000000000000000 C G C A S E S V M
  12274.                 E E E E E   D I E
  12275.     -----------------------------------------
  12276.  
  12277.     [IDT C6]
  12278.     3322222222221111111111
  12279.     10987654321098765432109 8 7 6 54 3 2 10
  12280.     ---------------------------------------
  12281.                 P   M     D T
  12282.     00000000000000000000000 C 0 C 00 E S 00
  12283.                 E   E       D
  12284.     ---------------------------------------
  12285.  
  12286.     [Cx6x86MX]
  12287.     3322222222221111111111
  12288.     10987654321098765432109 8 7 654 3 2 10
  12289.     ---------------------------------------
  12290.                 P P    D T
  12291.     00000000000000000000000 C G 000 E S 00
  12292.                 E E      D
  12293.     ---------------------------------------
  12294.  
  12295.     [AMD Am5k86] [AMD Am6k86]
  12296.     3322222222221111111111
  12297.     109876543210987654321098 7 6 5 4 3 2 1 0
  12298.     ----------------------------------------
  12299.                  P M   P D T P V
  12300.     000000000000000000000000 G C 0 S E S V M
  12301.                  E E   E   D I E
  12302.     ----------------------------------------
  12303.  
  12304.     [Pentium P5] [Pentium P54C]
  12305.     3322222222221111111111
  12306.     1098765432109876543210987 6 5 4 3 2 1 0
  12307.     ---------------------------------------
  12308.                   M   P D T P V
  12309.     0000000000000000000000000 C 0 S E S V M
  12310.                   E   E      D I E
  12311.     ----------------------------------------
  12312.  
  12313.     [IntelDX4] [486s SL Enhanced]
  12314.     3322222222221111111111
  12315.     109876543210987654321098765432 1 0
  12316.     ----------------------------------
  12317.                        P V
  12318.     000000000000000000000000000000 V M
  12319.                        I E
  12320.     ----------------------------------
  12321.  
  12322. FSR - Fast F.P. Context save/restore Enabled
  12323. PCE - Perfomance Monitoring Counters Enabled
  12324. PGE - Page Global Extension
  12325. MCE - Machine Check Enable
  12326. PAE - Physical Address Extention
  12327. PSE - Page Size Extention
  12328. DE  - Debbuging Expection
  12329. TSD - Time Stamp Disable
  12330. PVI - Protected mode Virtual Interrupt
  12331. VME - Virtual Mode Exception
  12332.  
  12333. ------------------------------------------------------
  12334. APPENDIX Q     TYPE OF INTEL'S SOCKETS
  12335.  
  12336. Socket #  Pins    Vcc    CPU        OverDrive
  12337.    ----------------------------------------------
  12338. 1      169    5    i486SX        IntelSX2 ODP
  12339.             i486DX        IntelDX2 ODP
  12340.    ----------------------------------------------
  12341. 2      238    5    i486SX        IntelSX2 ODP
  12342.             i486DX        IntelDX2 ODP
  12343.             i486DX2        IntelDX4 ODP
  12344.                     Pentium     ODP (P24T)
  12345.    ----------------------------------------------
  12346. 3      237    3/5    i486SX        IntelSX2 ODP
  12347.             i486DX        IntelDX2 ODP
  12348.             i486DX2        IntelDX4 ODP
  12349.             i486SX2        Pentium     ODP (P24T)
  12350.             IntelDX4
  12351.    ----------------------------------------------
  12352. 4      273    5    Pentium (P5)    Pentium ODP (P5T)
  12353.    ----------------------------------------------
  12354. 5      320    3.3    Pentium (P54C)    Pentium ODP (P54T)
  12355.    ----------------------------------------------
  12356. 6      235    3.3    IntelDX4    Pentium ODP (P24T)
  12357.    ----------------------------------------------
  12358. 7      321    2.9-3.3    Pentium (P54C)    Pentium ODP (P54T)
  12359.             Pentium (P55C)
  12360.    ----------------------------------------------
  12361. 8      387    2.9-3.3    Pentium Pro(P6) Pentium Pro ODP (P6T)
  12362.    ----------------------------------------------
  12363.  
  12364. Slot #     Pins    Vcc    CPU        Overdrive
  12365.    ----------------------------------------------
  12366.  1     242    2.9-3.3    Pentium II
  12367.    ----------------------------------------------
  12368.  2     ???    2.4?    "Deschutes"
  12369.    -----------------------------------------------
  12370. Note: The main Pentium II chip have 528 pins.
  12371.  
  12372. ------------------------------------------------------
  12373. APPENDIX R    UNDEFINED FLAGS
  12374.  
  12375. See CPUUTIL.ZIP for UFLAGS.COM !!
  12376.  
  12377. Hey, Guys!  Do You really think about set of 80x86 CPU cores and
  12378. "That's mean UNDEFINED FLAGS?".
  12379.  
  12380. 1) Do You Ask Yourself: "How many 80x86 base cores are?"
  12381.    Let's discuss about definitions:
  12382.      What's mean "base core"?
  12383.      "Base core" mean: same core clock for instructions, same undefined
  12384.      features e.t.c., and was produced many CPUs this type.
  12385.      (so, i486DX2 and i486DX have same core),
  12386.      (but i486DX2 and IntelDX4 have differ (cos MUL time +etc.).
  12387.      (i486SX integer core is look like i486DX core without NPX and all things
  12388.       joined with it).
  12389.  
  12390.     So we have next list of Main Base Cores:
  12391.     8086/8088        (186s skipped)
  12392.     286
  12393.     386            (have some differents on vendors)
  12394.     Cx486SLC/Cx486DX    (and all clones like TI486SXL)
  12395.     i486
  12396.     UMC U5S
  12397.     Cyrix Cx5x86 (M1sc)
  12398.     Pentium
  12399.     NexGen Nx5x86
  12400.     Cyrix Cx6x86 (M1)
  12401.     AMD Am5k86
  12402.     Pentium Pro
  12403.  
  12404.     Of course  one Main Base Core have many CPUs which have differents between
  12405.     self, for example: TI486SXL have Cx486DLC Base Core.
  12406.  
  12407.     This Base Cores is relative, of course.
  12408.     (We may discuss Where to push C&T 38600DX etc., but it doesn't matter)
  12409.  
  12410. 2) How many situation with Undefined Flags exists?
  12411.  
  12412.     Not too many, as You think:
  12413.         MUL
  12414.         DIV
  12415.         IMUL
  12416.         IDIV
  12417.         NEG    (ZF)
  12418.         AND/OR/XOR/etc (AF)
  12419.         Shift/Rotates (OF)
  12420.     and  some more.
  12421.  
  12422. 3) What's To Do?
  12423.  
  12424. Let's make next experiment:
  12425.  
  12426.     AH = 0
  12427.     AH -> FLG
  12428.     PERFORM TEST SEQUENCE
  12429.     FLG -> AH
  12430.     GET RESULT # 1
  12431.     AH = FF
  12432.     AH -> FLG
  12433.     PERFORM TEST SEQUENCE
  12434.     FLG -> AH
  12435.     GET RESULT # 2
  12436.     ANALYSING RESULTS. (WHICH BIT PASSED, WHICH DRIVEN BY INSTRUCTION
  12437.  
  12438. Main Test Sequences are:
  12439.  
  12440. MUL:    mov    ax,0000h
  12441.     mov    bx,1234h
  12442.     mul    bx
  12443.  
  12444. DIV:    mov    ax,1234h
  12445.     mov    bl,22h
  12446.     div    bl
  12447.  
  12448. IMUL:    mov    ax,0092h
  12449.     mov    bl,22h
  12450.     imul    bl
  12451.  
  12452. IDIV:    mov    ax,0ffeeh
  12453.     mov    bl,22h
  12454.     idiv    bl
  12455.  
  12456. LOG:    mov    ax,0ff00h
  12457.     mov    bx,0f0fh
  12458.     and    ax,bx
  12459.  
  12460. 4) Result:
  12461.  
  12462. Here placed summary of Undefined flag analysis on CPUs.
  12463.   ------------------------------------------------------------------------
  12464. CPU        ------------- Sequence -------------
  12465. CORE        MUL    DIV    IMUL    IDIV    LOG        Note
  12466.   ------------------------------------------------------------------------
  12467. 286         ALL     ALL     ALL     ALL     ALL        as 386,i486
  12468.         DRIVEN    DRIVEN    DRIVEN    DRIVEN    DRIVEN
  12469.   ------------------------------------------------------------------------
  12470. 386         ALL     ALL     ALL     ALL     ALL        as 286,i486
  12471.         DRIVEN    DRIVEN    DRIVEN    DRIVEN    DRIVEN
  12472.   ------------------------------------------------------------------------
  12473. i486         ALL     ALL     ALL     ALL     ALL        as 286,386
  12474.         DRIVEN    DRIVEN    DRIVEN    DRIVEN    DRIVEN
  12475.   ------------------------------------------------------------------------
  12476. Cx486SLC    Z,S,P,A     ALL    Z,S,P,A     ALL     AF
  12477.         PASSED    PASSED    PASSED    PASSSED PASSED
  12478.   ------------------------------------------------------------------------
  12479. UMC U5S        Z,S,P,A     ALL    Z,S,P,A     ALL     ALL
  12480.         PASSED    PASSED    PASSED    PASSED    DRIVEN
  12481.   ------------------------------------------------------------------------
  12482. Cx5x86         P,A    C,O,P,A     P,A    C,O,P,A     ALL
  12483.         PASSED    PASSED    PASSED    PASSED    DRIVEN
  12484.   ------------------------------------------------------------------------
  12485. Pentium        Z,S,P,A     ALL    Z,S,P,A     ALL     ALL        as Pentium Pro
  12486.         PASSED    DRIVEN    PASSED    DRIVEN    DRIVEN
  12487.   ------------------------------------------------------------------------
  12488. Nx5x86        ????    ????    ????    ????    ????    Somebody who have
  12489.         ????    ????    ????    ????    ????   NexGen please contact Me.
  12490.  -------------------------------------------------------------------------
  12491. Cx6x86         ALL     C,O     ALL     C,O     ALL
  12492.         DRIVEN    PASSED    DRIVEN    PASSED    DRIVEN
  12493.   ------------------------------------------------------------------------
  12494. Am5k86        Z,S,P,A     C,O    Z,S,P,A     C,O     ALL
  12495.         PASSED    PASSED    PASSED    PASSED    DRIVEN
  12496.   ------------------------------------------------------------------------
  12497. Pentium    Pro    Z,S,P,A     ALL    Z,S,P,A     ALL     ALL        as Pentium
  12498.         PASSED    DRIVEN    PASSED    DRIVEN    DRIVEN
  12499.   ------------------------------------------------------------------------
  12500.  
  12501. Note: See utilites, included to this OPCODE.LST for getting UNDEFINED FLAGS
  12502.       on Your processor.
  12503.  
  12504. ---------------------------------------------------
  12505. APPENDIX  S   FLOATING POINT REGISTERS FORMATS
  12506.  
  12507.    +-------+
  12508.    |  CW   |
  12509.    +-------+
  12510.  
  12511.     [8087]
  12512.     1111 1 11
  12513.     6543 2 10 98 7 6 5 4 3 2 1 0
  12514.     ----------------------------
  12515.     %%%% I RR PP I % P U O Z D I
  12516.          C CC CC E     M M M M M M
  12517.              M
  12518.     ----------------------------
  12519.  
  12520.     [80287]
  12521.     1111 1 11
  12522.     6543 2 10 98 76 5 4 3 2 1 0
  12523.     ---------------------------
  12524.     %%%% I RR PP %% P U O Z D I
  12525.          C CC CC    M M M M M M
  12526.  
  12527.     ---------------------------
  12528.  
  12529.     [287XL/XLT,387SX/DX and all build-in FPUs]
  12530.     11111 11
  12531.     65432 10 98 76 5 4 3 2 1 0
  12532.     ----------------------------
  12533.     %%%%% RR PP %% P U O Z D I
  12534.           CC CC    M M M M M M
  12535.     ----------------------------
  12536.  
  12537.   IC -    Infinity Control
  12538.         if =0 Infinity is Projective
  12539.         if =1 Infinity is Affine
  12540.   RC -    Round Control
  12541.         00 - Round to nearest or soon
  12542.         01 - Round down (toward -infinity)
  12543.         10 - Round up    (toward +infinity)
  12544.         11 - Chop (Truncate toward 0)
  12545.   PC -    Precension Control
  12546.         00 - 24 bit
  12547.         01 - Reserved
  12548.         10 - 53 bit
  12549.         11 - 64 bit
  12550.  IEM - Interrupt Mask Enable
  12551.         0 - Interrupts Enable
  12552.         1 - Interrupts Disable
  12553.  PM  - Precension mask
  12554.  UM  - Underflow  mask
  12555.  OM  - Overflow Mask
  12556.  ZM  - Zero Maks
  12557.  DM  - Denormalized operand mask
  12558.  IM  - Invalid Operation Mask
  12559.  
  12560. All other F.P registers: ST(i), TAGS, SW have same format on all FPUs.
  12561. Present some different in FPU environment, but now is no time for describe
  12562. it here.
  12563.  
  12564. -------------------------------------------------
  12565. APPENDIX  T    FORMAT  OF  PAGE TABLES ENTRYES
  12566.  
  12567.  In X86 Architecture there are 3 modes of Paging:
  12568.     Mode A - i386..Pentium Compatible
  12569.  
  12570.   The selection of paging mode:
  12571.  
  12572. CR0.PG    CR4.PAE    CR4.PSE     page_desc.PS    Page Size  Address Space Paging Mode
  12573.   0       x       x          x           ----- Paging Disable -----
  12574.   1       0       0          x            4K        32bit         A
  12575.   1       0       1          0            4K        32bit         A
  12576.   1       0       1          1            4M        32bit         A
  12577.   1       1       x          0            4K        36bit         B
  12578.   1       1       x          1            2M        36bit         C
  12579.  
  12580. +----------------------------------------------------------------------------+
  12581. |    ----------------     Paging Mode A    -----------             |
  12582. +----------------------------------------------------------------------------+
  12583.  
  12584. Format of Linear Address:
  12585.     (Table )
  12586.      [32 bit address, 4K pages]
  12587.     bit    description
  12588.     31..22    index in PDT (Page Directory Table)
  12589.     21..12    index in PT  (Page Table)
  12590.     11..0    offset within Page
  12591.  
  12592.      [32 bit address, 4M pages]
  12593.     bit    description
  12594.     31..22    index in PDT (Page Directory Table)
  12595.     21..0    offset within Page
  12596.  
  12597. Format of CR3 register:
  12598.    -----------------    (Table )
  12599.     bit    description
  12600.     31..12    PDT base address (31..12) (PDBR)
  12601.     11..5    Reserved
  12602.     4    PCD
  12603.     3    PWT
  12604.     2..0    Reserved (0)
  12605.  
  12606.  +----------+
  12607.  | CR3.PDBR |
  12608.  +----------+
  12609.     |    PDT (Pages
  12610.     |    Directory Table)
  12611.     \---->+----------------+
  12612.           |       ....           |
  12613.           +----------------+     PT (Pages Table)
  12614.           |       PT desc.    |------>+-------------------+
  12615.           +----------------+       |      ......       |
  12616.           |       ....           |       +-------------------+
  12617.           +----------------+       |    Page desc.       | ---> +-----------+
  12618.           |               |       +-------------------+      | Page in   |
  12619.           |               |       |       .....       |      | memory 4K |
  12620.           |               |       +-------------------+      +-----------+
  12621.           +----------------+
  12622.           | 4M page desc.  |-----> +----------+
  12623.           +----------------+       | Page in  |
  12624.           |               |       | memory      |
  12625.           +----------------+       |   4Mb      |
  12626.                        +----------+
  12627.  
  12628.  +------------------------------+
  12629.  | Format of Pages Descriptors    |
  12630.  +------------------------------+
  12631.  
  12632.     [Pentium Pro,Pentium II,AMD K5,K6]
  12633.     (only page directory entrys support 4MB pages)
  12634.     33222222222211111111 11
  12635.     10987654321098765432 109 8 7 6 5 4 3 2 1 0
  12636.     ------------------------------------------
  12637.     PPPPPPPPPPPPPPPPPPPP AAA G P D A P P U R P
  12638.     FFFFFFFFFFFFFFFFFFFF VVV   S     C W / /
  12639.     AAAAAAAAAAAAAAAAAAAA LLL     D T S W
  12640.     ------------------------------------------
  12641.  
  12642.     [Pentium,Cyrix Cx6x86MX]
  12643.     (only page directory entrys support 4MB pages)
  12644.     33222222222211111111 11
  12645.     10987654321098765432 109 8 7 6 5 4 3 2 1 0
  12646.     ------------------------------------------
  12647.     PPPPPPPPPPPPPPPPPPPP AAA 0 P D A P P U R P
  12648.     FFFFFFFFFFFFFFFFFFFF VVV   S     C W / /
  12649.     AAAAAAAAAAAAAAAAAAAA LLL     D T S W
  12650.     ------------------------------------------
  12651.  
  12652.     [i486 and clones]
  12653.     33222222222211111111 11
  12654.     10987654321098765432 109 8 7 6 5 4 3 2 1 0
  12655.     ------------------------------------------
  12656.     PPPPPPPPPPPPPPPPPPPP AAA 0 0 D A P P U R P
  12657.     FFFFFFFFFFFFFFFFFFFF VVV     C W / /
  12658.     AAAAAAAAAAAAAAAAAAAA LLL     D T S W
  12659.     ------------------------------------------
  12660.  
  12661.     [Cx486SLC/DLC,TI486SLC/DLC/e,TI486SXL and clones]
  12662.     33222222222211111111 11
  12663.     10987654321098765432 109 8 7 6 5 4 3 2 1 0
  12664.     ------------------------------------------
  12665.     PPPPPPPPPPPPPPPPPPPP AAA 0 0 D A P 0 U R P
  12666.     FFFFFFFFFFFFFFFFFFFF VVV     C   / /
  12667.     AAAAAAAAAAAAAAAAAAAA LLL     D   S W
  12668.     ------------------------------------------
  12669.  
  12670.     [i386 and all clones]
  12671.     33222222222211111111 11
  12672.     10987654321098765432 109 8 7 6 5 43 2 1 0
  12673.     ------------------------------------------
  12674.     PPPPPPPPPPPPPPPPPPPP AAA 0 0 D A 00 U R P
  12675.     FFFFFFFFFFFFFFFFFFFF VVV        / /
  12676.     AAAAAAAAAAAAAAAAAAAA LLL        S W
  12677.     ------------------------------------------
  12678.  
  12679. PFA - Physical Frame address
  12680. AVL - Available for Operating System
  12681. G   - Global Page (valid if PGE bit in CR4 set
  12682. PS  - Page Size
  12683.     =0 Directory entry (if in PDT)
  12684.        4K page       (if in page table)
  12685.     =1 4M boundary (descriptor must be in PDT only))
  12686. D   - Dirty           (ignored in PDT)
  12687. A   - Accessed
  12688. PCD - Page Cache disable
  12689. PWT - Page Write throught
  12690. U/S - User/Supervisor
  12691. R/W - Read/Write
  12692. P   - Present
  12693.  
  12694. +----------------------------------------------------------------------------+
  12695. |    ----------------     Paging Modes B & C     -----------             |
  12696. +----------------------------------------------------------------------------+
  12697.  
  12698. Schemes, which used in paging modes B and C support address extension
  12699. up to 64bit, but now can be used only 36 bits of it.
  12700.  
  12701. Format of Linear Address:
  12702.     (Table )
  12703.      [36 bit address, 4K pages]        (mode B)
  12704.     bit    description
  12705.     31..30    index in PDPT (Page Directory Pointers Table)
  12706.     29..21    index in PDT (Page Directory Table)
  12707.     20..12    index in PT  (Page Table)
  12708.     11..0    offset within Page
  12709.  
  12710.      [36 bit address, 2M pages]        (mode C)
  12711.     bit    description
  12712.     31..30    index in PDPT (Page Directory Pointers Table)
  12713.     29..21    index in PDT (Page Directory Table)
  12714.     20..0    offset within Page
  12715.  
  12716. Format of CR3 register:
  12717.   --------------------    (Table )
  12718.     bit    description
  12719.     31..5    PDPT base address (38..12) (PDBR)
  12720.     4    PCD
  12721.     3    PWT
  12722.     2..0    Reserved (0)
  12723.  
  12724.   PDPT (Page Directory
  12725.   Pointer Table)           +----------+
  12726.  +----------+ <--------------------| CR3.PDBR |
  12727.  |   ...    |               +----------+
  12728.  +----------+
  12729.  | PDT desc |
  12730.  +----------+
  12731.     |    PDT (Pages
  12732.     |    Directory Table)
  12733.     \---->+----------------+
  12734.           |       ....           |
  12735.           +----------------+     PT (Pages Table)
  12736.           |       PT desc.    |------>+-------------------+
  12737.           +----------------+       |      ......       |
  12738.           |       ....           |       +-------------------+
  12739.           +----------------+       |    Page desc.       | ---> +-----------+
  12740.           |               |       +-------------------+      | Page in   |
  12741.           |               |       |       .....       |      | memory 4K |
  12742.           |               |       +-------------------+      +-----------+
  12743.           +----------------+
  12744.           | 2M page desc.  |-----> +----------+
  12745.           +----------------+       | Page in  |
  12746.           |               |       | memory      |
  12747.           +----------------+       |   2M      |
  12748.                        +----------+
  12749.  
  12750. Format of Page Directory Pointer Table Entry (4 entry/PDPT):
  12751.     ----------------------------------    (Table )
  12752.  
  12753.     6     3 3    1 1
  12754.     3 ... 6 5 ..... 2 1 ... 9 8..5 4 3 2..0
  12755.     -------+---------+-------+----+-+-+----
  12756.     %%%%%%%| PDT Base|     | %% |P|P| %%%
  12757.     %%%%%%%| Address | AVAIL | %% |C|W| %%%
  12758.     %%%%%%%|(35..12) |     | %% |D|T| %%%
  12759.     -------+---------+-------+----+-+-+----
  12760.  
  12761. Format of Page Directory Table Entry (512 entry/PDT)
  12762.        ----------------------------    (Table )
  12763.  
  12764.     [4K pages DT]: (Mode B)
  12765.     6     3 3    1 1
  12766.     3 ... 6 5 ..... 2 1 ... 9 8..6 5 4 3 2 1 0
  12767.     -------+---------+-------+----+-+-+-+-+-+-
  12768.     %%%%%%%| PT Base |     | %% | |P|P|U|R|
  12769.     %%%%%%%| Address | AVAIL | %% |A|C|W|/|/|P
  12770.     %%%%%%%|(35..12) |     | %% | |D|T|S|W|
  12771.     -------+---------+-------+----+-+-+-+-+-+-
  12772.  
  12773.     [2M page]: (Mode C)
  12774.     6     3 3    2 2  1 1
  12775.     3 ... 6 5 ..... 1 0..2 1 ... 9 8 7 6 5 4 3 2 1 0
  12776.     -------+---------+----+-------+-+-+-+-+-+-+-+-+-
  12777.     %%%%%%%|Page Base| %% |          | | | | |P|P|U|R|
  12778.     %%%%%%%| Address | %% | AVAIL |G|1|D|A|C|W|/|/|P
  12779.     %%%%%%%|(35..21) | %% |          | | | | |D|T|S|W|
  12780.     -------+---------+----+-------+-+-+-+-+-+-+-+-+-
  12781.  
  12782. Format of Page Table Entry (512 entry/PT):
  12783.        -------------------------    (Table )
  12784.  
  12785.     [2K page]: (Mode B)
  12786.     6     3 3    1 1
  12787.     3 ... 6 5 ..... 2 1 ... 9 8 7 6 5 4 3 2 1 0
  12788.     -------+---------+-------+-+-+-+-+-+-+-+-+-
  12789.     %%%%%%%|Page Base|     | | | | |P|P|U|R|
  12790.     %%%%%%%| Address | AVAIL |G|0|D|A|C|W|/|/|P
  12791.     %%%%%%%|(35..21) |     | | | | |D|T|S|W|
  12792.     -------+---------+-------+-+-+-+-+-+-+-+-+-
  12793.  
  12794. The means of bits same as in Paging Mode A.
  12795.  
  12796. -------------------------------------------------
  12797. APPENDIX U     FORMAT  OF  DESCRIPTORS
  12798.  
  12799. +-------------------------------+
  12800. | Format of Generic Descriptor: |
  12801. +-------------------------------+
  12802.  
  12803.     +00    WORD    Segment Limit (Low)    (15..0)
  12804.     +02    WORD    Segment Base  (Low)    (15..0)
  12805.     +04    BYTE    Segment Base  (Mid)    (23..16)
  12806.     +05    BYTE    Access Rights Byte (AR)
  12807.     +06    BYTE    Segment Limit (High) (19..16)/AR2
  12808.     +07    BYTE    Segment Base (High)    (31..24)
  12809.  
  12810.    This format have data and code segment descriptors.
  12811.  
  12812. +----------+
  12813. |    AR       |    Access Rights Byte
  12814. +----------+
  12815.  
  12816.     +----+----+----+----+----+----+----+----+
  12817.     | P  |     DPL   | S  |     |    |       |    |    [General AR]
  12818.     +----+----+----+----+----+----+----+----+
  12819.  
  12820. P   - (Present segment)
  12821.     =0 segment not present
  12822.     =1 segment present in memory
  12823.  
  12824. DPL - (Descriptor Privelege Level)
  12825.     00 - Highest
  12826.     11 - Lowest
  12827.  
  12828. S   - (System)
  12829.     =0 descriptor is system
  12830.     =1 descriptor is segment
  12831.  
  12832.     +----+----+----+----+----+----+----+----+
  12833.     | P  |     DPL   | 1  | E     |    |       |    |    [segment AR]
  12834.     +----+----+----+----+----+----+----+----+
  12835.  
  12836. E   - (Extended Type of Segment Descriptor)
  12837.     =0 data segment
  12838.     =1 code segment
  12839.  
  12840.     +----+----+----+----+----+----+----+----+
  12841.     | P  |     DPL   | 1  | 1     | C  | R  | A    |    [Code segment AR]
  12842.     +----+----+----+----+----+----+----+----+
  12843.  
  12844. C   - (Control Bit)
  12845.     =0  Working rules of calling segment wia gates, using PL.
  12846.     =1  Segment may be immediate called using CALL FAR from
  12847.         same or more privelege segment
  12848.  
  12849. R   - (Readable segment)
  12850.     =0  Reading disable (only execution enable)
  12851.     =1  Enable reading
  12852.  
  12853. A   - (Accessable)
  12854.     =0  None  accesses into segment was
  12855.     =1  Some accesses was
  12856.  
  12857.     +----+----+----+----+----+----+----+----+
  12858.     | P  |     DPL   | 1  | 0     | ED | W  | A    |    [Data segment AR]
  12859.     +----+----+----+----+----+----+----+----+
  12860.  
  12861. ED  - (Expand Down)
  12862.     =0 Expand Up
  12863.     =1 Expand down
  12864.  
  12865. W   - (Writable)
  12866.     =0 Write disable
  12867.     =1 Write enable
  12868.  
  12869.     +----+----+----+----+----+----+----+----+
  12870.     | P  |     DPL   | 0  |     T Y P E    |    [System descriptor AR]
  12871.     +----+----+----+----+----+----+----+----+
  12872.  
  12873. TYPE - (Type of System descriptor)
  12874.     0000 - Not Used
  12875.     0001 - Available TSS (286 style)
  12876.     0010 - LDT
  12877.     0011 - Busy TSS (286 style)
  12878.     0100 - Call Gate (286 style)
  12879.     0101 - Task Gate (286 style)
  12880.     0110 - Interrupt Gate (286 style)
  12881.     0111 - Trap Gate (286 style)
  12882.     1000 - Not Used
  12883.     1001 - Available TSS (386 style)
  12884.     1010 - Reserved
  12885.     1011 - Busy TSS (386 style)
  12886.     1100 - Call Gate (386 style)
  12887.     1101 - Reserved
  12888.     1110 - Interrupt Gate (386 style)
  12889.     1111 - Trap Gate (386 style)
  12890.  
  12891. +--------+
  12892. |  AR2     |
  12893. +--------+
  12894.  
  12895.     +----+----+----+----+
  12896.     | G  | D  | 0  | X  |
  12897.     +----+----+----+----+
  12898.  
  12899. G - (Granularity)
  12900.     =0 Segment limit calculated in Bytes (up to 2^20 bytes)
  12901.     =1 Segment limit calculated in Pages of 4K (up to 2^32 bytes)
  12902.  
  12903. D - (Dimensions)
  12904.     =0 16 bit segment
  12905.     =1 32 bit segment
  12906.     Note: need for code segments, 'cos opcodes in 16-bit and 32-bit
  12907.           segments are different.
  12908.  
  12909. X - Available for Operating System
  12910.  
  12911. +---------------------------------------------------------------------------+
  12912. | ------------------------ System Descriptors  -----------------------------|
  12913. +---------------------------------------------------------------------------+
  12914.  
  12915. +-----+
  12916. | LDT |
  12917. +-----+
  12918.  
  12919.     +00    WORD    LDT Limit (Low) 15..0
  12920.     +02    WORD    LDT Base (15..0)  (Low)
  12921.     +04    BYTE    LDT Base (23..16) (Mid)
  12922.     +05    BYTE    AR
  12923.     +06    BYTE    AR2
  12924.     +07    BYTE    LDT Base (31..24) (High)
  12925.  
  12926.     +----+----+----+----+----+----+----+----+
  12927.     | P  |     DPL   | 0  |  0 |  0 |     1 |  0 |    [AR]
  12928.     +----+----+----+----+----+----+----+----+
  12929.  
  12930. +---------------+
  12931. | 286 Call Gate |
  12932. +---------------+
  12933.  
  12934.     +00    WORD    Offset 15..0
  12935.     +02    WORD    Selector
  12936.     +04    BYTE    Word Count (5 bit)
  12937.     +05    BYTE    AR
  12938.     +06    WORD    0
  12939.  
  12940.     +----+----+----+----+----+----+----+----+
  12941.     | P  |     DPL   | 0  |  0 |  1 |     0 |  0 |    [AR]
  12942.     +----+----+----+----+----+----+----+----+
  12943.  
  12944. +---------------+
  12945. | 386 Call Gate |
  12946. +---------------+
  12947.  
  12948.     +00    WORD    Offset 15..0  (Low)
  12949.     +02    WORD    Selector
  12950.     +04    BYTE    Dword Count (5 bit)
  12951.     +05    BYTE    AR
  12952.     +06    WORD    Offset 31..16
  12953.  
  12954.     +----+----+----+----+----+----+----+----+
  12955.     | P  |     DPL   | 0  |  1 |  1 |     0 |  0 |    [AR]
  12956.     +----+----+----+----+----+----+----+----+
  12957.  
  12958. +---------+
  12959. | 286 TSS |
  12960. +---------+
  12961.  
  12962.     +00    WORD    TSS Limit  (15..0)
  12963.     +02    WORD    TSS Base   (15..0) (Low)
  12964.     +04    BYTE    TSS Base   (23..16) (Mid)
  12965.     +05    BYTE    AR
  12966.     +06    WORD    0
  12967.  
  12968.     +----+----+----+----+----+----+----+----+
  12969.     | P  |     DPL   | 0  |  0 |  0 |     B |  1 |    [AR]
  12970.     +----+----+----+----+----+----+----+----+
  12971.  
  12972. B    - (Busy)
  12973.     =0 TSS is available
  12974.     =1 TSS is busy (active,current)
  12975.  
  12976. +---------+
  12977. | 386 TSS |
  12978. +---------+
  12979.  
  12980.     +00    WORD    TSS Limit (15..0) (Low)
  12981.     +02    WORD    TSS Base  (15..0) (Low)
  12982.     +04    BYTE    TSS Base  (23..16)(Mid)
  12983.     +05    BYTE    AR
  12984.     +06    BYTE    AR2/TSS Limit High (19..16)
  12985.     +07    BYTE    TSS Base (31..24) (High)
  12986.  
  12987.     +----+----+----+----+----+----+----+----+
  12988.     | P  |     DPL   | 0  |  1 |  0 |     B |  1 |    [AR]
  12989.     +----+----+----+----+----+----+----+----+
  12990.  
  12991. +-------------------------+
  12992. | Interrupt/Trap Gate 286 |
  12993. +-------------------------+
  12994.  
  12995.     +00    WORD    Offset 15..0
  12996.     +02    WORD    Selector
  12997.     +04    BYTE    0
  12998.     +05    BYTE    AR
  12999.     +06    WORD    0
  13000.  
  13001.     +----+----+----+----+----+----+----+----+
  13002.     | P  |     DPL   | 0  |  0 |  1 |     1 |  T |    [AR]
  13003.     +----+----+----+----+----+----+----+----+
  13004.  
  13005. T -  (Trap Flag)
  13006.     =0 Interrupt Gate
  13007.     =1 Trap Gate
  13008.  
  13009. +-------------------------+
  13010. | Interrupt/Trap Gate 386 |
  13011. +-------------------------+
  13012.  
  13013.     +00    WORD    Offset 15..0  (Low)
  13014.     +02    WORD    Selector
  13015.     +04    BYTE    0
  13016.     +05    BYTE    AR
  13017.     +06    WORD    Offset 31..16 (High)
  13018.  
  13019.     +----+----+----+----+----+----+----+----+
  13020.     | P  |     DPL   | 0  |  1 |  1 |     1 |  T |    [AR]
  13021.     +----+----+----+----+----+----+----+----+
  13022.  
  13023. +-----------+
  13024. | Task Gate |
  13025. +-----------+
  13026.  
  13027.     +00    WORD    0
  13028.     +02    WORD    TSS Selector
  13029.     +04    BYTE    0
  13030.     +05    BYTE    AR
  13031.     +06    WORD    0
  13032.  
  13033.     +----+----+----+----+----+----+----+----+
  13034.     | P  |     DPL   | 0  |  0 |  1 |     0 |  1 |    [AR]
  13035.     +----+----+----+----+----+----+----+----+
  13036.  
  13037. +----------------------------------+
  13038. | Possible Tables for Descriptors  |
  13039. +----------------------------------+
  13040.     ---------------+-----------------------+---------------------------
  13041.      Lowest 5 bits |               |        Valid in
  13042.     of  AR       |          Type       |   GDT     LDT     IDT
  13043.     ---------------+-----------------------+---------------------------
  13044.     00010        LDT            +    -    -
  13045.     0*0*1        286 TSS            +    -    -
  13046.     0*100        Call Gate        +    +    -
  13047.     0*101        Task Gate        +    +    +
  13048.     0*110        Interrupt Gate        -    -    +
  13049.     0*111        Trap Gate        -    -    +
  13050.     10***        Data segment        +    +    -
  13051.     11***        Code segment        +    +    -
  13052.  
  13053. -------------------------------------------------
  13054. APPENDIX  V    FORMAT  OF  TSS
  13055.  
  13056. +--------------------+
  13057. | Format of 286 TSS  |
  13058. +--------------------+
  13059.  
  13060.     +00    WORD    Previous TSS Selector (Back Link)
  13061.     +02    WORD    Offset of stack     ring 0
  13062.     +04    WORD    Selector of stack ring 0
  13063.     +06    WORD    Offset of stack     ring 1
  13064.     +08    WORD    Selector of stack ring 1
  13065.     +0A    WORD    Offset of stack     ring 2
  13066.     +0C    WORD    Selector of stack ring 2
  13067.     +0E    WORD    IP
  13068.     +10    WORD    FLG
  13069.     +12    WORD    AX
  13070.     +14    WORD    CX
  13071.     +16    WORD    DX
  13072.     +18    WORD    BX
  13073.     +1A    WORD    SP
  13074.     +1C    WORD    BP
  13075.     +1E    WORD    SI
  13076.     +20    WORD    DI
  13077.     +22    WORD    ES
  13078.     +24    WORD    CS
  13079.     +26    WORD    SS
  13080.     +28    WORD    DS
  13081.     +2A    WORD    LDT
  13082. Note: Len of 286 TSS is 2Ch bytes (44d)
  13083.  
  13084. +--------------------+
  13085. | Format of 386 TSS  |
  13086. +--------------------+
  13087.  
  13088.             High word/Low word
  13089.     +00    DWORD    0/Previous TSS selector (Back Link)
  13090.     +04    DWORD    Stack pointer for ring 0
  13091.     +08    DWORD    0/Stack Selector for ring 0
  13092.     +0C    DWORD    Stack pointer for ring 1
  13093.     +10    DWORD    0/Stack Selector for ring 1
  13094.     +14    DWORD    Stack pointer for ring 2
  13095.     +18    DWORD    0/Stack Selector for ring 2
  13096.     +1C    DWORD    CR3
  13097.     +20    DWORD    EIP
  13098.     +24    DWORD    EFLAGS
  13099.     +28    DWORD    EAX
  13100.     +2C    DWORD    ECX
  13101.     +30    DWORD    EDX
  13102.     +34    DWORD    EBX
  13103.     +38    DWORD    ESP
  13104.     +3C    DWORD    EBP
  13105.     +40    DWORD    ESI
  13106.     +44    DWORD    EDI
  13107.     +48    DWORD    0/ES
  13108.     +4C    DWORD    0/CS
  13109.     +50    DWORD    0/SS
  13110.     +54    DWORD    0/DS
  13111.     +58    DWORD    0/FS
  13112.     +5C    DWORD    0/GS
  13113.     +60    DWORD    0/LDT
  13114.     +64    WORD    Trap Bits
  13115.     +66    WORD    Offset within TSS to I/O Permission Map
  13116. Minimal Length of TSS is 68 bytes.
  13117.  
  13118. IPM     is IO Permition Map Base address
  13119. TSS_LAST is last byte of TSS.
  13120.  
  13121.     +IPM-20h  20h BYTEs Software Interrupt Redirection Bitmap (VME)
  13122.                 1 bit/int
  13123.     +IPM      xxh BYTEs I/O Permition Bitmap
  13124.                 1 bit/port
  13125.     +TSS_LAST BYTE        I/O PAD Byte
  13126.                 PAD byte show which bits in last byte of
  13127.                 I/O permission bitmap valid.
  13128.                 (recommended to set up this byte to FF)
  13129.  
  13130.         TSS
  13131.  
  13132.     +----------------+
  13133.     |         |
  13134.     |      .....     |
  13135.     |         |
  13136.     +----------------+
  13137.     | offset to IPM     |----------------+
  13138.     +----------------+          |
  13139.     |      ....     |          |
  13140.     |      ....     |          |
  13141.     +----------------+          |
  13142.     |Int Redir Bitmap|          |
  13143.     +----------------+ <--------------+
  13144.     |     IPM     |
  13145.     +----------------+
  13146.     |  PAD BYTE     |
  13147.     +----------------+  <------ TSS Limit
  13148.  
  13149. ---------------------------------------------------
  13150. APPENDIX V  - Model Specific Registers List
  13151.  
  13152. [See MSR.LST]
  13153.  
  13154. ----------------------------------------------------------
  13155. APPENDIX X - SYSTEM MANAGMENT MODE (SMM)
  13156.  
  13157. +----------------+
  13158. | Base SM Modes: |
  13159. +----------------+
  13160.  
  13161.     There are 4 base types of SMM in x86 CPUs (unfortunetly, I don't knew
  13162. SMM in NexGen):
  13163.  
  13164.         Activation    Bytes    Hidden RAM    Hidden RAM    SMM
  13165. Vendor        Hard    Soft    Saved    Save Area    SMM code start    Type
  13166. AMD 386SXLV    +    SMI    228    6000:0000    FFFFFFF0      \
  13167. AMD 386DXLV    +    SMI    228    6000:0000    FFFFFFF0      | old AMD
  13168. AMD 486DXLV    +    SMI    364    6000:0000    FFFFFFF0      /
  13169.    -----------------------------------------------------------
  13170. Cx486SLC/DLC    +    HLT    -    -        -          \
  13171. Cx486SLC/e    +    -    35    User Definded    User Defined  | Cyrix
  13172. Cx486S..Cx486MX    +    (SMINT) 48    User Defined    User Defined  /
  13173.    -----------------------------------------------------------
  13174. IBM 386/486SLC    +    ICEBP    284    6000:0000    FFFFFFF0      ] IBM
  13175.    -----------------------------------------------------------
  13176. i386SL/i486SL    +    Timer    512    3000:FE00    3000:8000    \
  13177. i486SL-Enhanced    +    -    512    3000:FE00    3000:8000    | Intel
  13178. Pentium        +    (APIC)    512    3000:FE00    3000:8000    |
  13179. Pentium Pro/II    +    (APIC)    512    3000:FE00    3000:8000    /
  13180.  
  13181.     Intel Type SMM support all Intel CPUs (starting i386SL or i486
  13182. SL-Enhanced), and  AMD K5, K6 and later, IDT C6.
  13183.  
  13184. +---------------+
  13185. | Intel SMM    |
  13186. +---------------+
  13187.  
  13188.     Format of SMRAM
  13189.  
  13190. Ofset from                Actual
  13191. SMBASE        Description        Size    Writeable
  13192. FFFC    4    CR0            32    -
  13193. FFF8    4    CR3            32    -
  13194. FFF4    4    EFLAGS            32    +
  13195. FFF0    4    EIP            32    +
  13196. FFEC    4    EDI            32    +
  13197. FFE8    4    ESI            32    +
  13198. FFE4    4    EBP            32    +
  13199. FFE0    4    ESP            32    +
  13200. FFDC    4    EBX            32    +
  13201. FFD8    4    EDX            32    +
  13202. FFD4    4    ECX            32    +
  13203. FFD0    4    EAX            32    +
  13204. FFCC    4    DR6            32    -
  13205. FFC8    4    DR7            32    -
  13206. FFC4    4    TR            16    -
  13207. FFC0    4    LDTR            16    -
  13208. FFBC    4    GS            16    -
  13209. FFB8    4    FS            16    -
  13210. FFB4    4    DS            16    -
  13211. FFB0    4    SS            16    -
  13212. FFAC    4    CS            16    -
  13213. FFA8    4    ES            16    -
  13214. FFA4    4    I/O trap Dword        32    -
  13215. FFA0    8    reserved            -
  13216. FF9C    4    I/O trap EIP        32    -
  13217. FF94    8    reserved            -
  13218. FF90    4    IDT Base        32    -
  13219. FF8C    4    IDT Limit        20    -
  13220. FF88    4    GDT Base        32    -
  13221. FF84    4    GDT Limit        20    -
  13222. FF80    4    TSS Attribute        12    -
  13223. FF7C    4    TSS Base        32    -
  13224. FF78    4    TSS Limit        20    -
  13225. FF74    4    LDT Attribute        12    -
  13226. FF70    4    LDT Base        32    -
  13227. FF6C    4    LDT Limit        20    -
  13228. FF68    4    GS Attribute        12    -
  13229. FF64    4    GS Base            32    -
  13230. FF60    4    GS Limit        20    -
  13231. FF5C    4    FS Attribute        12    -
  13232. FF58    4    FS Base            32    -
  13233. FF54    4    FS Limit        20    -
  13234. FF50    4    DS Attribute        12    -
  13235. FF4C    4    DS Base            32    -
  13236. FF48    4    DS Limit        20    -
  13237. FF44    4    SS Attribute        12    -
  13238. FF40    4    SS Base            32    -
  13239. FF3C    4    SS Limit        20    -
  13240. FF38    4    CS Attribute        12    -
  13241. FF34    4    CS Base            32    -
  13242. FF30    4    CS Limit        20    -
  13243. FF2C    4    ES Attribute        12    -
  13244. FF28    4    ES Base            32    -
  13245. FF24    4    ES Limit        20    -
  13246. FF18    12    reserved            -
  13247. FF14    4    CR2            32    -
  13248. FF10    4    CR4            32    -
  13249. FF0C    4    I/O Restart ESI        32    -
  13250. FF08    4    I/O Restart ECX        32    -
  13251. FF04    4    I/O Restart EDI        32    -
  13252. FF02    2    Auto HALT Restart Slot    16*    +
  13253. FF00    2    I/O Trap Restart Slot    16*    +
  13254. FEFC    4    SMM Revision ID        32    -
  13255. FEF8    4    SMBASE Slot        32    +
  13256. 7E00    248    reserved            -
  13257.  
  13258. Note:    if Actual size < fiels size, then all upper that actual size bits are
  13259.     reserved.
  13260.  
  13261. +---------------+
  13262. | Cyrix SMM    |
  13263. +---------------+
  13264.     Full description of Cyrix SMM will be placed in future OPCODE.LST.
  13265.     Now see SMINT and some other Cyrix SMM commands for more details.
  13266.     See APPENDIX A1-A6 for more details.
  13267.  
  13268.     Format of SMRAM:
  13269.  
  13270. +00        <-------- Here pointed SMHR register (M2)
  13271. -04    4    DR7
  13272. -08    4    EFLAGS
  13273. -0C    4    CR0
  13274. -10    4    Current EIP
  13275. -14    4    Next EIP
  13276. -18    4    CS selector
  13277. -20    8    CS descriptor
  13278. -24    4    Bitfields
  13279.         Bit    Description
  13280.         22..21    CPL
  13281.         15    N    (Nested SMI Indicator)
  13282.         13    IS    (Internal SMI Indicator)
  13283.         4    H    (SMI on HLT instruction)
  13284.         3    S    (Software SMI entrance)
  13285.         2    P    (REP INSx/OUTSx indicator)
  13286.         1    I    (IN/INSx/OUT/OUTSx indicator)
  13287.         0    C    (Code segment writable flag)
  13288. -26    2    I/O Write Data Size
  13289. -28    2    I/O Write Address
  13290. -2C    4    I/O Write Data
  13291. -30    4    ESI or EDI
  13292.  
  13293. +-------------------+
  13294. | Old-style AMD SMM |
  13295. +-------------------+
  13296.  
  13297.     Format of SMRAM:
  13298.  
  13299. Offset    Bytes    Description
  13300.  
  13301. 60000    4    CR0
  13302. 60004    4    EFLAGS
  13303. 60008    4    EIP
  13304. 6000C    4    EDI
  13305. 60010    4    ESI
  13306. 60014    4    EBP
  13307. 60018    4    ESP
  13308. 6001C    4    EBX
  13309. 60020    4    EDX
  13310. 60024    4    ECX
  13311. 60028    4    EAX
  13312. 6002C    4    DR6
  13313. 60030    4    DR7
  13314. 60034    4    TR  selector
  13315. 60038    4    LDT selector
  13316. 6003C    4    GS  selector
  13317. 60040    4    FS  selector
  13318. 60044    4    DS  selector
  13319. 60048    4    SS  selector
  13320. 6004C    4    CS  selector
  13321. 60050    4    ES  selector
  13322. 60054    4    TSS descriptor    (ATTR)
  13323. 60058    4    TSS descriptor    (BASE)
  13324. 6005C    4    TSS descriptor    (LIMIT)
  13325. 60060    4    reserved
  13326. 60064    4    IDTR (BASE)
  13327. 60068    4    IDTR (LIMIT)
  13328. 6006C    4    REP OUTS Overrun Flag
  13329. 60070    4    GDTR (BASE)
  13330. 60074    4    GDTR (LIMIT)
  13331. 60078    4    LDT (ATTR)
  13332. 6007C    4    LDT (BASE)
  13333. 60080    4    LDT (LIMIT)
  13334. 60084    4    GS (ATTR)
  13335. 60088    4    GS (BASE)
  13336. 6008C    4    GS (LIMIT)
  13337. 60090    4    FS (ATTR)
  13338. 60094    4    FS (BASE)
  13339. 60098    4    FS (LIMIT)
  13340. 6009C    4    DS (ATTR)
  13341. 600A0    4    DS (BASE)
  13342. 600A4    4    DS (LIMIT)
  13343. 600A8    4    SS (ATTR)
  13344. 600AC    4    SS (BASE)
  13345. 600B0    4    SS (LIMIT)
  13346. 600B4    4    CS (ATTR)
  13347. 600B8    4    CS (BASE)
  13348. 600BC    4    CS (LIMIT)
  13349. 600C0    4    ES (ATTR)
  13350. 600C4    4    ES (BASE)
  13351. 600C8    4    ES (LIMIT)
  13352. ....
  13353. 60100    4    Temporary Register TST
  13354. 60104    4    Temporary Register IDX
  13355. 60108    4    Temporary Register TMPH
  13356. 6010C    4    Temporary Register TMPG
  13357. 60110    4    Temporary Register TMPF
  13358. 60114    4    Temporary Register TMPE
  13359. 60118    4    Temporary Register TMPD
  13360. 6011C    4    Temporary Register TMPC
  13361. 60120    4    Temporary Register TMPB
  13362. 60124    4    LEIP    (Last EIP)
  13363.     ------------- AMD Am486DXLV additional fields
  13364. 60128    4    PEIP
  13365. 6012C    36    Unused
  13366. 60150    88    F.P. Internal Registers
  13367.  
  13368. Note:    See LOADALL for More Information
  13369.  
  13370. +-------------------+
  13371. | IBM SMM        |
  13372. +-------------------+
  13373.  
  13374.     Format of SMRAM:
  13375.  
  13376. Offset    Bytes    Description
  13377. 60000    4    CR0
  13378. 60004    4    EFLAGS
  13379. 60008    4    EIP
  13380. 6000C    4    EDI
  13381. 60010    4    ESI
  13382. 60014    4    EBP
  13383. 60018    4    ESP
  13384. 6001C    4    EBX
  13385. 60020    4    EDX
  13386. 60024    4    ECX
  13387. 60028    4    EAX
  13388. 6002C    4    DR6
  13389. 60030    4    DR7
  13390. 60034    4    TR  selector
  13391. 60038    4    LDT selector
  13392. 6003C    4    GS  selector
  13393. 60040    4    FS  selector
  13394. 60044    4    DS  selector
  13395. 60048    4    SS  selector
  13396. 6004C    4    CS  selector
  13397. 60050    4    ES  selector
  13398. 60054    4    TSS descriptor    (ATTR)
  13399. 60058    4    TSS descriptor    (BASE)
  13400. 6005C    4    TSS descriptor    (LIMIT)
  13401. 60060    4    reserved
  13402. 60064    4    IDTR (BASE)
  13403. 60068    4    IDTR (LIMIT)
  13404. 6006C    4    REP OUTS Overrun Flag
  13405. 60070    4    GDTR (BASE)
  13406. 60074    4    GDTR (LIMIT)
  13407. 60078    4    LDT (ATTR)
  13408. 6007C    4    LDT (BASE)
  13409. 60080    4    LDT (LIMIT)
  13410. 60084    4    GS (ATTR)
  13411. 60088    4    GS (BASE)
  13412. 6008C    4    GS (LIMIT)
  13413. 60090    4    FS (ATTR)
  13414. 60094    4    FS (BASE)
  13415. 60098    4    FS (LIMIT)
  13416. 6009C    4    DS (ATTR)
  13417. 600A0    4    DS (BASE)
  13418. 600A4    4    DS (LIMIT)
  13419. 600A8    4    SS (ATTR)
  13420. 600AC    4    SS (BASE)
  13421. 600B0    4    SS (LIMIT)
  13422. 600B4    4    CS (ATTR)
  13423. 600B8    4    CS (BASE)
  13424. 600BC    4    CS (LIMIT)
  13425. 600C0    4    ES (ATTR)
  13426. 600C4    4    ES (BASE)
  13427. 600C8    4    ES (LIMIT)
  13428. ...
  13429. 60100    4    Temporary Register TST
  13430. 60104    4    Temporary Register IDX
  13431. 60108    4    Temporary Register TMPH
  13432. 6010C    4    Temporary Register TMPG
  13433. 60110    4    Temporary Register TMPF
  13434. 60114    4    Temporary Register TMPE
  13435. 60118    4    Temporary Register TMPD
  13436. 6011C    4    Temporary Register TMPC
  13437. 60120    4    Temporary Register TMPB
  13438. 60124    4    Temporary Register TMPA
  13439. 60128    4    CR2
  13440. 6012C    4    CR3
  13441. 60130    4    MSR 1001h (0..31)
  13442. 60134    4    MSR 1001h (63..32)
  13443. 60138    4    MSR 1000h (0..31)
  13444. 6013C    4    DR0
  13445. 60140    4    DR1
  13446. 60144    4    DR2
  13447. 60148    4    DR3
  13448. 6014C    4    PEIP (Previous Hidden Memory Space Instruction Pointer)
  13449.  
  13450. Note:    See ICEBP/ICERET for More Information
  13451.  
  13452. ----------------------------------------------------------
  13453. APPENDIX Y0  -    Vendor Instruction Time for Intel 8088 CPU
  13454.  
  13455. AAA                        4
  13456. AAD                        60
  13457. AAM                        83
  13458. AAS                        4
  13459. ADC    AL,imm8                    4
  13460. ADC    AX,imm16                4
  13461. ADC    r/m8,imm8                4/17+EA
  13462. ADC    r/m16,imm8                4/25+EA
  13463. ADC    r/m16,imm16                4/25+EA
  13464. ADC    r/m8,r8                    3/16+EA
  13465. ADC    r/m16,r16                3/24+EA
  13466. ADC    r8,r/m8                    3/9+EA
  13467. ADC    r16,r/m16                3/13+EA
  13468. ADD    AL,imm8                    4
  13469. ADD    AX,imm16                4
  13470. ADD    r/m8,imm8                4/17+EA
  13471. ADD    r/m16,imm8                4/25+EA
  13472. ADD    r/m16,imm16                4/25+EA
  13473. ADD    r/m8,r8                    3/16+EA
  13474. ADD    r/m16,r16                3/24+EA
  13475. ADD    r8,r/m8                    3/9+EA
  13476. ADD    r16,r/m16                3/13+EA
  13477. AND    AL,imm8                    4
  13478. AND    AX,imm16                4
  13479. AND    r/m8,imm8                4/16+EA
  13480. AND    r/m16,imm16                4/25+EA
  13481. AND    r/m8,r8                    3/16+EA
  13482. AND    r/m16,r16                3/24+EA
  13483. AND    r8,r/m8                    3/9+EA
  13484. AND    r16,r/m16                3/13+EA
  13485. CALL    rel16                    19(23)
  13486. CALL    r/m16                    16(24)/21(29)+EA
  13487. CALL    ptr16:16                28(36)
  13488. CALL    m16:16                    37(57)+EA
  13489. CBW                        2
  13490. CLC                        2
  13491. CLD                        2
  13492. CLI                        2
  13493. CMC                        2
  13494. CMP    AL,imm8                    4
  13495. CMP    AX,imm16                4
  13496. CMP    r/m8,imm8                4/10+EA
  13497. CMP    r/m16,imm8                4/-
  13498. CMP    r/m16,imm16                4/14+EA
  13499. CMP    r/m8,r8                    3/9+EA
  13500. CMP    r/m16,r16                3/13+EA
  13501. CMP    r8,r/m8                    3/9+EA
  13502. CMP    r16,r/m16                3/13+EA
  13503. CMPSB                        22
  13504. CMPSW                        30
  13505. CWD                        5
  13506. DAA                        4
  13507. DAS                        4
  13508. DEC    r/m8                    3/15+EA
  13509. DEC    r/m16                    2/23+EA
  13510. DEC    r16                    2
  13511. DIV    r/m8                    80-90/(86-96)+EA
  13512. DIV    r/m16                    144-162/(154-172)+EA
  13513. HLT                        2
  13514. IDIV    r/m8                    101-112/(107-118)+EA
  13515. IDIV    r/m16                    165-184/(175-194)+EA
  13516. IMUL    r/m8                    80-98/(86-104)+EA
  13517. IMUL    r/m16                    128-154/(138-164)+EA
  13518. IN    AL,imm8                    10
  13519. IN    AX,imm8                    14
  13520. IN    AL,DX                    8
  13521. IN    AX,DX                    12
  13522. INC    r/m8                    3/15+EA
  13523. INC    r/m16                    2/23+EA
  13524. INC    r16                    2
  13525. INT    3                    53(72)
  13526. INT    imm8                    51(71)
  13527. INTO                        53(73) or 4
  13528. IRET                        32(44)
  13529. Jcc    rel8                    4 or 16
  13530. JCXZ    rel8                    6 or 18
  13531. JMP    rel8                    15
  13532. JMP    rel16                    15
  13533. JMP    r/m16                    11/18+EA
  13534. JMP    ptr16:16                15
  13535. JMP    m16:16                    24+EA
  13536. LAHF                        4
  13537. LDS    r16,m16:16                24+EA
  13538. LES    r16,m16:16                24+EA
  13539. LEA    r16,m                    2+EA
  13540. LODSB                        12
  13541. LODSW                        16
  13542. LOOP    rel8                    5 or 17
  13543. LOOPE    rel8                    6 or 18
  13544. LOOPNE    rel8                    5 or 19
  13545. MOV    r/m8,r8                    2/9+EA
  13546. MOV    r/m16,r16                2/13+EA
  13547. MOV    r8,r/m8                    2/8+EA
  13548. MOV    r16,r/m16                2/12+EA
  13549. MOV    r/m16,sreg                2/9(13)+EA
  13550. MOV    sreg,r/m16                2/8(12)+EA
  13551. MOV    AL,moffs8                10
  13552. MOV    AX,moffs16                14
  13553. MOV    moffs8,AL                10
  13554. MOV    moffs16,AX                14
  13555. MOV    r8,imm8                    4
  13556. MOV    r16,imm16                4
  13557. MOV    r/m8,imm8                4/10+EA
  13558. MOV    r/m16,imm16                4/14+EA
  13559. MOVSB                        18
  13560. MOVSW                        26
  13561. MUL    r/m8                    70-77/(76-83)+EA
  13562. MUL    r/m16                    118-133/(128-143)+EA
  13563. NEG    r/m8                    3/16+EA
  13564. NEG    r/m16                    3/24+EA
  13565. NOP                        3
  13566. NOT    r/m8                    3/16+EA
  13567. NOT    r/m16                    3/24+EA
  13568. OR    AL,imm8                    4
  13569. OR    AX,imm16                4
  13570. OR    r/m8,imm8                4/17+EA
  13571. OR    r/m16,imm16                4/25+EA
  13572. OR    r/m8,r8                    3/16+EA
  13573. OR    r/m16,r16                3/24+EA
  13574. OR    r8,r/m8                    3/9+EA
  13575. OR    r16,r/m16                3/13+EA
  13576. OUT    imm8,AL                    10
  13577. OUT    imm8,AX                    14
  13578. OUT    DX,AL                    8
  13579. OUT    DX,AX                    12
  13580. POP    m16                    25+EA
  13581. POP    r16                    12
  13582. POP    sreg                    12
  13583. POPF                        12
  13584. PUSH    r/m16                    15/24+EA
  13585. PUSH    r16                    15
  13586. PUSH    sreg                    14
  13587. PUSHF                        14
  13588. RCL    r/m8,1                    2/15+EA
  13589. RCL    r/m16,1                    2/23+EA
  13590. RCL    r/m8,CL                    8+4*bit/20+EA+4*bit
  13591. RCL    r/m16,CL                8+4*bit/28+EA+4*bit
  13592. RCR    r/m8,1                    2/15+EA
  13593. RCR    r/m16,1                    2/23+EA
  13594. RCR    r/m8,CL                    8+4*bit/20+EA+4*bit
  13595. RCR    r/m16,CL                8+4*bit/28+EA+4*bit
  13596. ROL    r/m8,1                    2/15+EA
  13597. ROL    r/m16,1                    2/23+EA
  13598. ROL    r/m8,CL                    8+4*bit/20+EA+4*bit
  13599. ROL    r/m16,CL                8+4*bit/28+EA+4*bit
  13600. ROR    r/m8,1                    2/15+EA
  13601. ROR    r/m16,1                    2/23+EA
  13602. ROR    r/m8,CL                    8+4*bit/20+EA+4*bit
  13603. ROR    r/m16,CL                8+4*bit/28+EA+4*bit
  13604. REP    MOVSB                    9+17*reps
  13605. REP    MOVSW                    9+25*reps
  13606. REP    LODSB                    n/a
  13607. REP    LODSW                    n/a
  13608. REP    STOSB                    9+10*reps
  13609. REP    STOSW                    9+14*reps
  13610. REPE    CMPSB                    9+17*reps
  13611. REPE    CMPSW                    9+25*reps
  13612. REPE    SCASB                    9+15*reps
  13613. REPE    SCASW                    9+19*reps
  13614. REPNE    CMPSB                    9+17*reps
  13615. REPNE    CMPSW                    9+25*reps
  13616. REPNE    SCASB                    9+15*reps
  13617. REPNE    SCASW                    9+19*reps
  13618. RET    (near)                    20
  13619. RET    imm16    (near)                24
  13620. RET    (far)                    32
  13621. RET    imm16    (far)                31
  13622. SAHF                        4
  13623. SAL    r/m8,1                    2/15+EA
  13624. SAL    r/m16,1                    2/23+EA
  13625. SAL    r/m8,CL                    8+4*bit/20+EA+4*bit
  13626. SAL    r/m16,CL                8+4*bit/28+EA+4*bit
  13627. SAR    r/m8,1                    2/15+EA
  13628. SAR    r/m16,1                    2/23+EA
  13629. SAR    r/m8,CL                    8+4*bit/20+EA+4*bit
  13630. SAR    r/m16,CL                8+4*bit/28+EA+4*bit
  13631. SHL    r/m8,1                    2/15+EA
  13632. SHL    r/m16,1                    2/23+EA
  13633. SHL    r/m8,CL                    8+4*bit/20+EA+4*bit
  13634. SHL    r/m16,CL                8+4*bit/28+EA+4*bit
  13635. SHR    r/m8,1                    2/15+EA
  13636. SHR    r/m16,1                    2/23+EA
  13637. SHR    r/m8,CL                    8+4*bit/20+EA+4*bit
  13638. SHR    r/m16,CL                8+4*bit/28+EA+4*bit
  13639. SBB    AL,imm8                    4
  13640. SBB    AX,imm16                4
  13641. SBB    r/m8,imm8                4/17+EA
  13642. SBB    r/m16,imm8                4/25+EA
  13643. SBB    r/m16,imm16                4/25+EA
  13644. SBB    r/m8,r8                    3/16+EA
  13645. SBB    r/m16,r16                3/24+EA
  13646. SBB    r8,r/m8                    3/9+EA
  13647. SBB    r16,r/m16                3/16+EA
  13648. SCASB                        15
  13649. SCASW                        19
  13650. SETALC                        n/a
  13651. STC                        2
  13652. STD                        2
  13653. STI                        2
  13654. STOSB                        11
  13655. STOSW                        15
  13656. SUB    AL,imm8                    4
  13657. SUB    AX,imm16                4
  13658. SUB    r/m8,imm8                4/17+EA
  13659. SUB    r/m16,imm8                4/25+EA
  13660. SUB    r/m16,imm16                4/25+EA
  13661. SUB    r/m8,r8                    3/16+EA
  13662. SUB    r/m16,r16                3/24+EA
  13663. SUB    r8,r/m8                    3/9+EA
  13664. SUB    r16,r/m16                3/13+EA
  13665. TEST    AL,imm8                    4
  13666. TEST    AX,imm16                4
  13667. TEST    r/m8,imm8                5/11+EA
  13668. TEST    r/m16,imm16                5/11+EA
  13669. TEST    r/m8,r8                    3/9+EA
  13670. TEST    r/m16,r16                3/13+EA
  13671. WAIT                        3+5*number_of_wait_cycles
  13672. XCHG    AX,r16                    3
  13673. XCHG    r/m8,r8                    4/17+EA
  13674. XCHG    r/m16,r16                4/25+EA
  13675. XLAT                        11
  13676. XOR    AL,imm8                    4
  13677. XOR    AX,imm16                4
  13678. XOR    r/m8,imm8                4/17+EA
  13679. XOR    r/m16,imm16                4/25+EA
  13680. XOR    r/m8,r8                    3/16+EA
  13681. XOR    r/m16,r16                3/24+EA
  13682. XOR    r8,r/m8                    3/9+EA
  13683. XOR    r16,r/m16                3/13+EA
  13684. (END)
  13685.  
  13686. ----------------------------------------------------------
  13687. APPENDIX Y1  -    Vendor Instruction Time for Intel i80186 CPU
  13688.  
  13689. AAA                        8
  13690. AAD                        15
  13691. AAD    imm8                    15 ?? (n/a)
  13692. AAM                        19
  13693. AAM    imm8                    19 ?? (n/a)
  13694. AAS                        7
  13695. ADC    AL,imm8                    3
  13696. ADC    AX,imm16                4
  13697. ADC    r/m8,imm8                4/16
  13698. ADC    r/m16,imm16                4/16
  13699. ADC    r/m8,r8                    3/15
  13700. ADC    r/m16,r16                3/15
  13701. ADC    r8,r/m8                    3/10
  13702. ADC    r16,r/m16                3/10
  13703. ADD    AL,imm8                    3
  13704. ADD    AX,imm16                4
  13705. ADD    r/m8,imm8                4/16
  13706. ADD    r/m32,imm8                4/16
  13707. ADD    r/m8,r8                    3/15
  13708. ADD    r/m16,r16                3/15
  13709. ADD    r8,r/m8                    3/10
  13710. ADD    r16,r/m16                3/10
  13711. AND    AL,imm8                    3
  13712. AND    AX,imm16                4
  13713. AND    r/m8,imm8                4/16
  13714. AND    r/m16,imm16                4/16
  13715. AND    r/m8,r8                    3/15
  13716. AND    r/m16,r16                3/15
  13717. AND    r8,r/m8                    3/10
  13718. AND    r16,r/m16                3/10
  13719. BOUND    r16,m16&16                33-35
  13720. CALL    rel16                    15
  13721. CALL    r/m16                    13/19
  13722. CALL    ptr16:16                23
  13723. CALL    m16:16                    38
  13724. CBW                        2
  13725. CLC                        2
  13726. CLD                        2
  13727. CLI                        2
  13728. CMC                        2
  13729. CMP    AL,imm8                    3
  13730. CMP    AX,imm16                4
  13731. CMP    r/m8,imm8                3/10
  13732. CMP    r/m16,imm16                3/10
  13733. CMP    r/m8,r8                    3/10
  13734. CMP    r/m16,r16                3/10
  13735. CMP    r8,r/m8                    3/10
  13736. CMP    r16,r/m16                3/10
  13737. CMPSB                        22
  13738. CMPSW                        22
  13739. CWD                        4
  13740. DAA                        4
  13741. DAS                        4
  13742. DEC    r/m8                    3/15
  13743. DEC    r/m16                    3/15
  13744. DEC    r16                    3
  13745. DIV    r/m8                    29/35
  13746. DIV    r/m16                    38/44
  13747. ESC    imm4,r/m                n/a
  13748. ENTER    imm16,0                    15
  13749. ENTER    imm16,1                    25
  13750. ENTER    imm16,imm8                22+16*(level-1)
  13751. HLT                        2
  13752. IDIV    r/m8                    44-52/50-58
  13753. IDIV    r/m16                    53-61/59-67
  13754. IMUL    r/m8                    25-28/31-34
  13755. IMUL    r/m16                    34-47/40-43
  13756. IMUL    r16,imm8                22-25/29-32 (~)
  13757. IMUL    r16,imm16                22-25/29-32 (~)
  13758. IMUL    r16,r/m16,imm8                22-25/29-32 (~)
  13759. IMUL    r16,r/m16,imm16                22-25/29-32 (~)
  13760. IN    AL,imm8                    10
  13761. IN    AX,imm8                    10
  13762. IN    AL,DX                    8
  13763. IN    AX,DX                    8
  13764. INC    r/m8                    3/15
  13765. INC    r/m16                    3/15
  13766. INC    r16                    3
  13767. INSB                        14
  13768. INSW                        14
  13769. INT    3                    45
  13770. INT    imm8                    47
  13771. INTO                        4 or 48
  13772. IRET                        28
  13773. Jcc    rel8                    4 or 13
  13774. JCXZ    rel8                    5 or 15
  13775. JMP    rel8                    14
  13776. JMP    rel16                    14
  13777. JMP    r/m16                    11/17
  13778. JMP    ptr16:16                14
  13779. JMP    m16:16                    26
  13780. LAHF                        2
  13781. LDS    r16,m16:16                18
  13782. LES    r16,m16:16                18
  13783. LEA    r16,m                    6
  13784. LEAVE                        8
  13785. LODSB                        12
  13786. LODSW                        12
  13787. LOOP    rel8                    6 or 16
  13788. LOOPE    rel8                    6 or 16
  13789. LOOPNE    rel8                    6 or 16
  13790. MOV    r/m8,r8                    2/12
  13791. MOV    r/m16,r16                2/12
  13792. MOV    r8,r/m8                    2/9
  13793. MOV    r16,r/m16                2/9
  13794. MOV    r/m16,sreg                2/11
  13795. MOV    sreg,r/m16                2/9
  13796. MOV    AL,moffs8                8
  13797. MOV    AX,moffs16                8
  13798. MOV    moffs8,AL                9
  13799. MOV    moffs16,AX                9
  13800. MOV    r8,imm8                    3
  13801. MOV    r16,imm16                4
  13802. MOV    r/m8,imm8                3/12
  13803. MOV    r/m16,imm16                4/13
  13804. MOVSB                        14
  13805. MOVSW                        14
  13806. MUL    r/m8                    26-28/32-34
  13807. MUL    r/m16                    35-37/41-43
  13808. NEG    r/m8                    3/10
  13809. NEG    r/m16                    3/10
  13810. NOP                        3
  13811. NOT    r/m8                    3/10
  13812. NOT    r/m16                    3/10
  13813. OR    AL,imm8                    3
  13814. OR    AX,imm16                4
  13815. OR    r/m8,imm8                4/16
  13816. OR    r/m16,imm16                4/16
  13817. OR    r/m8,r8                    3/15
  13818. OR    r/m16,r16                3/15
  13819. OR    r8,r/m8                    3/10
  13820. OR    r16,r/m16                3/10
  13821. OUT    imm8,AL                    9
  13822. OUT    imm8,AX                    9
  13823. OUT    DX,AL                    7
  13824. OUT    DX,AX                    7
  13825. OUTSB                        14
  13826. OUTSW                        14
  13827. POP    m16                    20
  13828. POP    r16                    10
  13829. POP    sreg                    8
  13830. POPA                        51
  13831. POPF                        8
  13832. PUSH    r/m16                    10/16
  13833. PUSH    r16                    10
  13834. PUSH    imm8                    10
  13835. PUSH    imm16                    10
  13836. PUSH    sreg                    9
  13837. PUSHA                        36
  13838. PUSHF                        9
  13839. RCL    r/m8,1                    2/15
  13840. RCL    r/m16,1                    2/15
  13841. RCL    r/m8,CL                    5+n/17+n
  13842. RCL    r/m16,CL                5+n/17+n
  13843. RCL    r/m8,imm8                5+n/17+n
  13844. RCL    r/m16,imm8                5+n/17+n
  13845. RCR    r/m8,1                    2/15
  13846. RCR    r/m16,1                    2/15
  13847. RCR    r/m8,CL                    5+n/17+n
  13848. RCR    r/m16,CL                5+n/17+n
  13849. RCR    r/m8,imm8                5+n/17+n
  13850. RCR    r/m16,imm8                5+n/17+n
  13851. ROL    r/m8,1                    2/15
  13852. ROL    r/m16,1                    2/15
  13853. ROL    r/m8,CL                    5+n/17+n
  13854. ROL    r/m16,CL                5+n/17+n
  13855. ROL    r/m8,imm8                5+n/17+n
  13856. ROL    r/m16,imm8                5+n/17+n
  13857. ROR    r/m8,1                    2/15
  13858. ROR    r/m16,1                    2/15
  13859. ROR    r/m8,CL                    5+n/17+n
  13860. ROR    r/m16,CL                5+n/17+n
  13861. ROR    r/m8,imm8                5+n/17+n
  13862. ROR    r/m16,imm8                5+n/17+n
  13863. RET    (near)                    16
  13864. RET    (far)                    22
  13865. RET    imm16    (near)                18
  13866. RET    imm16    (far)                25
  13867. SAHF                        3
  13868. SAL    r/m8,1                    2/15
  13869. SAL    r/m16,1                    2/15
  13870. SAL    r/m8,CL                    5+n/17+n
  13871. SAL    r/m16,CL                5+n/17+n
  13872. SAL    r/m8,imm8                5+n/17+n
  13873. SAL    r/m16,imm8                5+n/17+n
  13874. SAR    r/m8,1                    2/15
  13875. SAR    r/m16,1                    2/15
  13876. SAR    r/m8,CL                    5+n/17+n
  13877. SAR    r/m16,CL                5+n/17+n
  13878. SAR    r/m8,imm8                5+n/17+n
  13879. SAR    r/m16,imm8                5+n/17+n
  13880. SHL    r/m8,1                    2/15
  13881. SHL    r/m16,1                    2/15
  13882. SHL    r/m8,CL                    5+n/17+n
  13883. SHL    r/m16,CL                5+n/17+n
  13884. SHL    r/m8,imm8                5+n/17+n
  13885. SHL    r/m16,imm8                5+n/17+n
  13886. SHR    r/m8,1                    2/15
  13887. SHR    r/m16,1                    2/15
  13888. SHR    r/m8,CL                    5+n/17+n
  13889. SHR    r/m16,CL                5+n/17+n
  13890. SHR    r/m8,imm8                5+n/17+n
  13891. SHR    r/m16,imm8                5+n/17+n
  13892. SBB    AL,imm8                    3
  13893. SBB    AX,imm16                4
  13894. SBB    r/m8,imm8                4/16
  13895. SBB    r/m16,imm16                4/16
  13896. SBB    r/m8,r8                    3/15
  13897. SBB    r/m16,r16                3/15
  13898. SBB    r8,r/m8                    3/10
  13899. SBB    r16,r/m16                3/10
  13900. SCASB                        15
  13901. SCASW                        15
  13902. SETALC                        n/a
  13903. STC                        2
  13904. STD                        2
  13905. STI                        2
  13906. STOSB                        10
  13907. STOSW                        10
  13908. SUB    AL,imm8                    3
  13909. SUB    AX,imm16                4
  13910. SUB    r/m8,imm8                4/16
  13911. SUB    r/m16,imm16                4/16
  13912. SUB    r/m8,r8                    3/15
  13913. SUB    r/m16,r16                3/15
  13914. SUB    r8,r/m8                    3/10
  13915. SUB    r16,r/m16                3/10
  13916. TEST    AL,imm8                    3
  13917. TEST    AX,imm16                4
  13918. TEST    r/m8,imm8                4/10
  13919. TEST    r/m16,imm16                4/10
  13920. TEST    r/m8,r8                    3/10
  13921. TEST    r/m16,r16                3/10
  13922. WAIT                        6 (min)
  13923. XCHG    AX,r16                    3
  13924. XCHG    r/m8,r8                    4/17
  13925. XCHG    r/m16,r16                4/17
  13926. XLAT                        11
  13927. XOR    AL,imm8                    3
  13928. XOR    AX,imm16                4
  13929. XOR    r/m8,imm8                4/16
  13930. XOR    r/m16,imm16                4/16
  13931. XOR    r/m8,r8                    3/15
  13932. XOR    r/m16,r16                3/15
  13933. XOR    r8,r/m8                    3/10
  13934. XOR    r16,r/m16                3/10
  13935. (END)
  13936.  
  13937. ----------------------------------------------------------
  13938. APPENDIX Y2  -    Vendor Instruction Time for NEC V20 CPU
  13939.  
  13940. AAA                        3
  13941. AAD                        7
  13942. AAD    imm8                    7
  13943. AAM                        15
  13944. AAM    imm8                    15
  13945. AAS                        3
  13946. ADC    AL,imm8                    4
  13947. ADC    AX,imm16                4
  13948. ADC    r/m8,imm8                4/18
  13949. ADC    r/m16,imm16                4/26
  13950. ADC    r/m8,r8                    2/15
  13951. ADC    r/m16,r16                2/24
  13952. ADC    r8,r/m8                    2/11
  13953. ADC    r16,r/m16                2/15
  13954. ADD    AL,imm8                    4
  13955. ADD    AX,imm16                4
  13956. ADD    r/m8,imm8                4/18
  13957. ADD    r/m16,imm16                4/26
  13958. ADD    r/m8,r8                    2/15
  13959. ADD    r/m16,r16                2/24
  13960. ADD    r8,r/m8                    2/11
  13961. ADD    r16,r/m16                2/15
  13962. AND    AL,imm8                    4
  13963. AND    AX,imm16                4
  13964. AND    r/m8,imm8                4/18
  13965. AND    r/m16,imm16                4/26
  13966. AND    r/m8,r8                    2/15
  13967. AND    r/m16,r16                2/24
  13968. AND    r8,r/m8                    2/11
  13969. AND    r16,r/m16                2/15
  13970. BOUND    r16,m16&16                18-23/73-76
  13971. CALL    rel16                    16-20
  13972. CALL    r/m16                    14-18/23-31
  13973. CALL    ptr16:16                21-29
  13974. CALL    m16:16                    31-47
  13975. CBW                        2
  13976. CLC                        2
  13977. CLD                        2
  13978. CLI                        2
  13979. CMC                        2
  13980. CMP    AL,imm8                    4
  13981. CMP    AX,imm16                4
  13982. CMP    r/m8,imm8                4/13
  13983. CMP    r/m16,imm16                4/17
  13984. CMP    r/m8,r8                    2/11
  13985. CMP    r/m16,r16                2/15
  13986. CMP    r8,r/m8                    2/11
  13987. CMP    r16,r/m16                2/15
  13988. CMPSB                        7+14n !!
  13989. CMPSW                        7+14n !!
  13990. CWD                        4-5
  13991. DAA                        3
  13992. DAS                        7
  13993. DEC    r/m8                    2/16
  13994. DEC    r/m16                    2/24
  13995. DEC    r16                    2
  13996. DIV    r/m8                    19/25
  13997. DIV    r/m16                    25/35
  13998. ESC    imm4,r/m                n/a
  13999. ENTER    imm16,0                    16
  14000. ENTER    imm16,1                    23 ??
  14001. ENTER    imm16,imm8                23+16*(level-1)
  14002. HLT                        2
  14003. IDIV    r/m8                    29/35
  14004. IDIV    r/m16                    43/53
  14005. IMUL    r/m8                    33/39
  14006. IMUL    r/m16                    47/57
  14007. IMUL    r16,r/m16,imm8                28-34/34-44
  14008. IMUL    r16,r/m16,imm16                36-42/46-52
  14009. IN    AL,imm8                    9
  14010. IN    AX,imm8                    13
  14011. IN    AL,DX                    8
  14012. IN    AX,DX                    12
  14013. INC    r/m8                    2/16
  14014. INC    r/m16                    2/24
  14015. INC    r16                    2
  14016. INSB                        9+8n !!
  14017. INSW                        9+8n !!
  14018. INT    3                    38-50
  14019. INT    imm8                    38-50
  14020. INTO                        3 or 52
  14021. IRET                        27-39
  14022. Jcc    rel8                    4 or 14
  14023. JCXZ    rel8                    5 or 13
  14024. JMP    rel8                    12
  14025. JMP    rel16                    13
  14026. JMP    r/m16                    11/20-24
  14027. JMP    ptr16:16                15
  14028. JMP    m16:16                    27-35
  14029. LAHF                        2
  14030. LDS    r16,m16:16                18-26
  14031. LES    r16,m16:16                18-26
  14032. LEA    r16,m                    4
  14033. LEAVE                        6/10
  14034. LODSB                        7+9n !!
  14035. LODSW                        7+9n !!
  14036. LOOP    rel8                    5 or 13
  14037. LOOPE    rel8                    5 or 14
  14038. LOOPNE    rel8                    5 or 14
  14039. MOV    r/m8,r8                    2/9
  14040. MOV    r/m16,r16                2/13
  14041. MOV    r8,r/m8                    2/11
  14042. MOV    r16,r/m16                2/15
  14043. MOV    r/m16,sreg                2/10-14
  14044. MOV    sreg,r/m16                2/11-15
  14045. MOV    AL,moffs8                10
  14046. MOV    AX,moffs16                14
  14047. MOV    moffs8,AL                9
  14048. MOV    moffs16,AX                13
  14049. MOV    r8,imm8                    4
  14050. MOV    r16,imm16                4
  14051. MOV    r/m8,imm8                4/11
  14052. MOV    r/m16,imm16                4/15
  14053. MOVSB                        11+8n !!
  14054. MOVSW                        11+8n !!
  14055. MUL    r/m8                    21/27
  14056. MUL    r/m16                    30/36
  14057. NEG    r/m8                    2/16
  14058. NEG    r/m16                    2/24
  14059. NOP                        3
  14060. NOT    r/m8                    2/16
  14061. NOT    r/m16                    2/24
  14062. OR    AL,imm8                    4
  14063. OR    AX,imm16                4
  14064. OR    r/m8,imm8                4/18
  14065. OR    r/m16,imm16                4/26
  14066. OR    r/m8,r8                    2/15
  14067. OR    r/m16,r16                2/24
  14068. OR    r8,r/m8                    2/11
  14069. OR    r16,r/m16                2/15
  14070. OUT    imm8,AL                    8
  14071. OUT    imm8,AX                    12
  14072. OUT    DX,AL                    8
  14073. OUT    DX,AX                    12
  14074. OUTSB                        9+8n !!
  14075. OUTSW                        9+8n !!
  14076. POP    m16                    17-25
  14077. POP    r16                    8-12
  14078. POP    sreg                    8-12
  14079. POPA                        43-75
  14080. POPF                        8-12
  14081. PUSH    r/m16                    8-12/18-26
  14082. PUSH    r16                    8-12
  14083. PUSH    imm8                    7
  14084. PUSH    imm16                    12
  14085. PUSH    sreg                    8-12
  14086. PUSHA                        35-67
  14087. PUSHF                        8-12
  14088. RCL    r/m8,1                    2/2-4
  14089. RCL    r/m16,1                    2/2-4
  14090. RCL    r/m8,CL                    7+n/19+n
  14091. RCL    r/m16,CL                7+n/27+n
  14092. RCL    r/m8,imm8                7+n/19+n
  14093. RCL    r/m16,imm8                7+n/27+n
  14094. RCR    r/m8,1                    2/16
  14095. RCR    r/m16,1                    2/24
  14096. RCR    r/m8,CL                    7+n/19+n
  14097. RCR    r/m16,CL                7+n/27+n
  14098. RCR    r/m8,imm8                7+n/19+n
  14099. RCR    r/m16,imm8                7+n/27+n
  14100. ROL    r/m8,1                    2/16
  14101. ROL    r/m16,1                    2/24
  14102. ROL    r/m8,CL                    7+n/19+n
  14103. ROL    r/m16,CL                7+n/27+n
  14104. ROL    r/m8,imm8                7+n/19+n
  14105. ROL    r/m16,imm8                7+n/27+n
  14106. ROR    r/m8,1                    2/16
  14107. ROR    r/m16,1                    2/24
  14108. ROR    r/m8,CL                    7+n/19+n
  14109. ROR    r/m16,CL                7+n/27+n
  14110. ROR    r/m8,imm8                2/16
  14111. ROR    r/m16,imm8                2/24
  14112. RET    (near)                    15-19
  14113. RET    (far)                    21-29
  14114. RET    imm16    (near)                20-24
  14115. RET    imm16    (far)                24-32
  14116. SAHF                        3
  14117. SAL    r/m8,1                    2/16
  14118. SAL    r/m16,1                    2/24
  14119. SAL    r/m8,CL                    7+n/19+n
  14120. SAL    r/m16,CL                7+n/27+n
  14121. SAL    r/m8,imm8                7+n/19+n
  14122. SAL    r/m16,imm8                7+n/27+n
  14123. SAR    r/m8,1                    2/16
  14124. SAR    r/m16,1                    2/24
  14125. SAR    r/m8,CL                    7+n/19+n
  14126. SAR    r/m16,CL                7+n/27+n
  14127. SAR    r/m8,imm8                7+n/19+n
  14128. SAR    r/m16,imm8                7+n/27+n
  14129. SHL    r/m8,1                    2/16
  14130. SHL    r/m16,1                    2/24
  14131. SHL    r/m8,CL                    7+n/19+n
  14132. SHL    r/m16,CL                7+n/27+n
  14133. SHL    r/m8,imm8                7+n/19+n
  14134. SHL    r/m16,imm8                7+n/27+n
  14135. SHR    r/m8,1                    2/16
  14136. SHR    r/m16,1                    2/24
  14137. SHR    r/m8,CL                    7+n/19+n
  14138. SHR    r/m16,CL                7+n/27+n
  14139. SHR    r/m8,imm8                7+n/19+n
  14140. SHR    r/m16,imm8                7+n/27+n
  14141. SBB    AL,imm8                    4
  14142. SBB    AX,imm16                4
  14143. SBB    r/m8,imm8                4/18
  14144. SBB    r/m16,imm16                4/26
  14145. SBB    r/m8,r8                    2/15
  14146. SBB    r/m16,r16                2/24
  14147. SBB    r8,r/m8                    2/11
  14148. SBB    r16,r/m16                2/15
  14149. SCASB                        7+10n !!
  14150. SCASW                        7+10n!!
  14151. SETALC                        n/a
  14152. STC                        2
  14153. STD                        2
  14154. STI                        2
  14155. STOSB                        7+4n !!
  14156. STOSW                        7+4n !!
  14157. SUB    AL,imm8                    4
  14158. SUB    AX,imm16                4
  14159. SUB    r/m8,imm8                4/18
  14160. SUB    r/m16,imm16                4/26
  14161. SUB    r/m8,r8                    2/15
  14162. SUB    r/m16,r16                2/24
  14163. SUB    r8,r/m8                    2/11
  14164. SUB    r16,r/m16                2/15
  14165. TEST    AL,imm8                    4
  14166. TEST    AX,imm16                4
  14167. TEST    r/m8,imm8                4/11
  14168. TEST    r/m16,imm16                4/15
  14169. TEST    r/m8,r8                    2/10
  14170. TEST    r/m16,r16                2/14
  14171. WAIT                        2+5n (n = number of times POLL pin sampled)
  14172. XCHG    AX,r16                    2
  14173. XCHG    r/m8,r8                    3/16
  14174. XCHG    r/m16,r16                3/24
  14175. XLAT                        9
  14176. XOR    AL,imm8                    4
  14177. XOR    AX,imm16                4
  14178. XOR    r/m8,imm8                4/18
  14179. XOR    r/m16,imm16                4/26
  14180. XOR    r/m8,r8                    2/15
  14181. XOR    r/m16,r16                2/24
  14182. XOR    r8,r/m8                    2/11
  14183. XOR    r16,r/m16                2/15
  14184. (END)
  14185.  
  14186. ----------------------------------------------------------
  14187. APPENDIX Y3  -    Vendor Instruction Time for Intel i286 CPU
  14188.  
  14189. AAA                        3
  14190. AAD                        14
  14191. AAD    imm8                    n/a
  14192. AAM                        16
  14193. AAM    imm8                    n/a
  14194. AAS                        3
  14195. ADC    AL,imm8                    3
  14196. ADC    AX,imm16                3
  14197. ADC    r/m8,imm8                3/7+EA
  14198. ADC    r/m16,imm16                3/7+EA
  14199. ADC    r/m8,r8                    2/7+EA
  14200. ADC    r/m16,r16                2/7+EA
  14201. ADC    r8,r/m8                    2/7+EA
  14202. ADC    r16,r/m16                2/7+EA
  14203. ADD    AL,imm8                    3
  14204. ADD    AX,imm16                3
  14205. ADD    r/m8,imm8                3/7+EA
  14206. ADD    r/m16,imm16                3/7+EA
  14207. ADD    r/m8,r8                    2/7+EA
  14208. ADD    r/m16,r16                2/7+EA
  14209. ADD    r8,r/m8                    2/7+EA
  14210. ADD    r16,r/m16                2/7+EA
  14211. AND    AL,imm8                    3
  14212. AND    AX,imm16                3
  14213. AND    r/m8,imm8                3/7+EA
  14214. AND    r/m16,imm16                3/7+EA
  14215. AND    r/m8,r8                    2/7+EA
  14216. AND    r/m16,r16                2/7+EA
  14217. AND    r8,r/m8                    2/7+EA
  14218. AND    r16,r/m16                2/7+EA
  14219. ARPL    r/m16,r16                10/11+EA
  14220. BOUND    r16,m16&16                13+EA
  14221. CALL    rel16                    7+m
  14222. CALL    r/m16                    7+m/11+m
  14223. CALL    ptr16:16                13+m
  14224. CALL    ptr16:16    (PM, direct segment)       26+m
  14225. CALL    ptr16:16    (PM, via call gate, same p 41+m
  14226. CALL    ptr16:16    (PM, via call gate, more p 82+m
  14227. CALL    ptr16:16    (PM, via call gate, more p 86+4*param+m
  14228. CALL    m16:16                    16+m
  14229. CALL    m16:16    (PM, direct segment)        29+m
  14230. CALL    m16:16    (PM, via gate, same priveleg44+m
  14231. CALL    m16:16    (PM, via gate, more priveleg83+m
  14232. CALL    m16:16    (PM, via gate, more priveleg90+4*param+m
  14233. CBW                    2
  14234. CLC                    2
  14235. CLD                    2
  14236. CLI                    3
  14237. CLTS                    2
  14238. CMC                    2
  14239. CMP    AL,imm8                    3
  14240. CMP    AX,imm16                3
  14241. CMP    r/m8,imm8                3/6+
  14242. CMP    r/m16,imm8                3/6+EA
  14243. CMP    r/m16,imm16                3/6+EA
  14244. CMP    r/m8,r8                    2/7+EA
  14245. CMP    r/m16,r16                2/7+EA
  14246. CMP    r8,r/m8                    2/6+EA
  14247. CMP    r16,r/m16                2/6+EA
  14248. CMPSB                    f
  14249. CMPSW                    f
  14250. CWD                    2
  14251. DAA                    3
  14252. DAS                    3
  14253. DEC    r/m8                    2/7+EA
  14254. DEC    r/m16                    2/7+EA
  14255. DEC    r16                    2
  14256. DIV    r/m8                    14/17+EA
  14257. DIV    r/m16                    22/25+EA
  14258. ESC    imm4,r/m                (9-20)+EA
  14259. ENTER    imm16,0                  11
  14260. ENTER    imm16,1                  15
  14261. ENTER    imm16,imm8              16+4*(n-1)
  14262. HLT                    2
  14263. IDIV    r/m8                   17/20+EA
  14264. IDIV    r/m16                   25/28+EA
  14265. IMUL    r/m8                   13/16+EA
  14266. IMUL    r/m16                   21/24+EA
  14267. IMUL    r16,r/m16               21/24+EA
  14268. IMUL    r16,imm8               ??
  14269. IMUL    r16,imm16               ??
  14270. IMUL    r16,r/m16,imm8               21/24+EA
  14271. IMUL    r16,r/m16,imm16               21/24+EA
  14272. IN    AL,imm8                     5
  14273. IN    AL,imm8    (PM, CPL <= IOPL)         5
  14274. IN    AX,imm8                     5
  14275. IN    AX,imm8    (PM, CPL <= IOPL)           5
  14276. IN    AL,DX                     5
  14277. IN    AL,DX    (PM, CPL <= IOPL)           5
  14278. IN    AX,DX                     5
  14279. IN    AX,DX    (PM, CPL <= IOPL)           5
  14280. INC    r/m8                    2/7+EA
  14281. INC    r/m16                    2/7+EA
  14282. INC    r16                    2
  14283. INSB                    f
  14284. INSW                    f
  14285. INT    3                    23+m
  14286. INT    3    (PM, same privilege)          40+m
  14287. INT    3    (PM, more privelege)          78+m
  14288. INT    imm8                    23+m
  14289. INT    imm8    (PM, same privilege)           40+m
  14290. INT    imm8    (PM, more privelege)           78+m
  14291. INTO                    24+m or 3
  14292. INTO    (PM, same privilege)           40+m or 3
  14293. INTO    (PM, more privelege)           78+m or 3
  14294. IRET                    17
  14295. IRET    (PM, to same privilege)           31+m
  14296. IRET    (PM, to lesser privilege)       55+m
  14297. Jcc    rel8                    7+m or 3
  14298. JCXZ    rel8                   8+m or 4
  14299. JMP    rel8                    7+m
  14300. JMP    rel16                    7+m
  14301. JMP    r/m16                    7/11+m
  14302. JMP    ptr16:16                11/23+m
  14303. JMP    ptr16:16    (PM, direct segment)       f
  14304. JMP    ptr16:16    (PM, via call gate, same pr38+m
  14305. JMP    m16:16                    15/26+m
  14306. JMP    m16:16    (PM, direct segment)         f
  14307. JMP    m16:16    (PM, via call gate, same priv41+m
  14308. LAHF                    2
  14309. LAR    r16,r/m16                14/16+
  14310. LDS    r16,m16:16                7+/21+
  14311. LDS    r16,m16:16    (PM)             f
  14312. LDS    r32,m16:32    (PM)             f
  14313. LES    r16,m16:16                7+/21+
  14314. LES    r16,m16:16    (PM)             f
  14315. LES    r32,m16:32    (PM)             f
  14316. LEA    r16,m                    3+
  14317. LEAVE                    5
  14318. LGDT    m16&32                   11+
  14319. LIDT    m16&32                   12+
  14320. LLDT    r/m16                   17/19+
  14321. LMSW    r/m16                   3/6+
  14322. LOADALL                    f
  14323. LODSB                    5+4*n
  14324. LODSW                    5+4*n
  14325. LOOP    rel8                   8/4
  14326. LOOPE    rel8                  8/4
  14327. LOOPNE    rel8                 8/4
  14328. LSL    r16,r/m16                14/16
  14329. LTR    r/m16                    17/19+
  14330. MOV    r/m8,r8                    2/3+
  14331. MOV    r/m16,r16                2/3+
  14332. MOV    r8,r/m8                    2/5+
  14333. MOV    r16,r/m16                2/5+
  14334. MOV    r/m16,sreg                2/3+
  14335. MOV    sreg,r/m16                2/5+
  14336. MOV    sreg,r/m16    (PM)             17/19+
  14337. MOV    AL,moffs8                5
  14338. MOV    AX,moffs16                5
  14339. MOV    moffs8,AL                3
  14340. MOV    moffs16,AX                3
  14341. MOV    r8,imm8                    2
  14342. MOV    r16,imm16                2
  14343. MOV    r/m8,imm8                2/3+
  14344. MOV    r/m16,imm16                2/3+
  14345. MOVSB                    5+4*n
  14346. MOVSW                    5
  14347. MUL    r/m8                    13/16+
  14348. MUL    r/m16                    21/24+
  14349. NEG    r/m8                    2/7
  14350. NEG    r/m16                    2/7
  14351. NOP                    3
  14352. NOT    r/m8                    2/7
  14353. NOT    r/m16                    2/7
  14354. OR    AL,imm8                     3
  14355. OR    AX,imm16                 3
  14356. OR    r/m8,imm8                 3/7
  14357. OR    r/m16,imm16                 3/7
  14358. OR    r/m8,r8                     2/7
  14359. OR    r/m16,r16                 2/7
  14360. OR    r8,r/m8                     2/7
  14361. OR    r16,r/m16                 2/7
  14362. OUT    imm8,AL                    3
  14363. OUT    imm8,AL    (PM, CPL <= IOPL)        3
  14364. OUT    imm8,AX                    3
  14365. OUT    imm8,AX    (PM, CPL <= IOPL)        3
  14366. OUT    DX,AL                    3
  14367. OUT    DX,AL    (PM, CPL <= IOPL)          3
  14368. OUT    DX,AX                    3
  14369. OUT    DX,AX    (PM, CPL <= IOPL)          3
  14370. OUTSB                    5+4*n
  14371. OUTSW                    5
  14372. POP    m16                    5+
  14373. POP    r16                    5
  14374. POP    sreg                    5/20
  14375. POP    sreg    (PM)                   20
  14376. POPA                    19
  14377. POPF                    5
  14378. POPF    (PM)                   5
  14379. PUSH    r/m16                   5+
  14380. PUSH    r16                   3
  14381. PUSH    imm8                   3
  14382. PUSH    imm16                   3
  14383. PUSH    sreg                   3
  14384. PUSHA                    17+
  14385. PUSHF                    3
  14386. PUSHF    (PM)                  3
  14387. RCL    r/m8,1                    2/7
  14388. RCL    r/m16,1                    2/7
  14389. RCL    r/m8,CL                    5/8+n
  14390. RCL    r/m16,CL                5/8+n
  14391. RCL    r/m8,imm8                5/8+n
  14392. RCL    r/m16,imm8                5/8+n
  14393. RCR    r/m8,1                    2/7
  14394. RCR    r/m16,1                    2/7
  14395. RCR    r/m8,CL                    5/8+n
  14396. RCR    r/m16,CL                5/8+n
  14397. RCR    r/m8,imm8                5/8+n
  14398. RCR    r/m16,imm8                5/8+n
  14399. ROL    r/m8,1                    2/7
  14400. ROL    r/m16,1                    2/7
  14401. ROL    r/m8,CL                    5/8+n
  14402. ROL    r/m16,CL                5/8+n
  14403. ROL    r/m8,imm8                5/8+n
  14404. ROL    r/m16,imm8                5/8+n
  14405. ROR    r/m8,1                    2/7
  14406. ROR    r/m16,1                    2/7
  14407. ROR    r/m8,CL                    5/8+n
  14408. ROR    r/m16,CL                5/8+n
  14409. ROR    r/m8,imm8                5/8+n
  14410. ROR    r/m16,imm8                5/8+n
  14411. RDTSC                    f
  14412. RET    (near)                    11+m
  14413. RET    (far)                    15+m
  14414. RET    (PM, far, same PL)            25+m
  14415. RET    (PM, far, different PL)            55+m
  14416. RET    imm16    (near)                  11+m
  14417. RET    imm16    (far)                  15+m
  14418. RET    imm16    (PM, far, same PL)          25+m
  14419. RET    imm16    (PM, far, different PL)          55+m
  14420. SAHF                    2
  14421. SAL    r/m8,1                    2/7
  14422. SAL    r/m16,1                    2/7
  14423. SAL    r/m8,CL                    5/8+n
  14424. SAL    r/m16,CL                5/8+n
  14425. SAL    r/m8,imm8                5/8+n
  14426. SAL    r/m16,imm8                5/8+n
  14427. SAR    r/m8,1                    2/7
  14428. SAR    r/m16,1                    2/7
  14429. SAR    r/m8,CL                    5/8+n
  14430. SAR    r/m16,CL                5/8+n
  14431. SAR    r/m8,imm8                5/8+n
  14432. SAR    r/m16,imm8                5/8+n
  14433. SHL    r/m8,1                    2/7
  14434. SHL    r/m16,1                    2/7
  14435. SHL    r/m8,CL                    5/8+n
  14436. SHL    r/m16,CL                5/8+n
  14437. SHL    r/m8,imm8                5/8+n
  14438. SHL    r/m16,imm8                5/8+n
  14439. SHR    r/m8,1                    2/7
  14440. SHR    r/m16,1                    2/7
  14441. SHR    r/m8,CL                    5/8+n
  14442. SHR    r/m16,CL                5/8+n
  14443. SHR    r/m8,imm8                5/8+n
  14444. SHR    r/m16,imm8                5/8+n
  14445. SBB    AL,imm8                    3
  14446. SBB    AX,imm16                3
  14447. SBB    r/m8,imm8                3/7
  14448. SBB    r/m16,imm16                3/7
  14449. SBB    r/m8,r8                    2/7
  14450. SBB    r/m16,r16                2/7
  14451. SBB    r8,r/m8                    2/7
  14452. SBB    r16,r/m16                2/7
  14453. SCASB                    5+8*n
  14454. SCASW                    5+8*n
  14455. SETALC                    f
  14456. SGDT    m16&32                   11+
  14457. SIDT    m16&32                   12+
  14458. SLDT    r/m16                   2/3+
  14459. SMINT                    f
  14460. SMSW    r/m16                   2/3+
  14461. STC                    2
  14462. STD                    2
  14463. STI                    2
  14464. STOSB                    4+3*n
  14465. STOSW                    4+3*n
  14466. STR    r/m16                    2/3
  14467. SUB    AL,imm8                    3
  14468. SUB    AX,imm16                3
  14469. SUB    r/m8,imm8                2/7
  14470. SUB    r/m16,imm16                2/7
  14471. SUB    r/m8,r8                    2/6
  14472. SUB    r/m16,r16                2/6
  14473. SUB    r8,r/m8                    2/6
  14474. SUB    r16,r/m16                2/6
  14475. TEST    AL,imm8                   3
  14476. TEST    AX,imm16               3
  14477. TEST    r/m8,imm8               3/6
  14478. TEST    r/m16,imm16               3/6
  14479. TEST    r/m8,r8                   2/6
  14480. TEST    r/m16,r16               2/6
  14481. VERR    r/m16                   14/16+
  14482. VERW    r/m16                   14/16+
  14483. WAIT                    3
  14484. XCHG    AX,r16                   3
  14485. XCHG    r/m8,r8                   3/5+
  14486. XCHG    r/m16,r16               3/5+
  14487. XLAT                    5
  14488. XOR    AL,imm8                    3
  14489. XOR    AX,imm16                3
  14490. XOR    r/m8,imm8                2/7+
  14491. XOR    r/m16,imm16                2/7+
  14492. XOR    r/m8,r8                    2/6
  14493. XOR    r/m16,r16                2/6
  14494. XOR    r8,r/m8                    2/6
  14495. XOR    r16,r/m16                2/6
  14496. (END)
  14497.  
  14498. ----------------------------------------------------------
  14499. APPENDIX Y4  -    Vendor Instruction Time for Intel i386DX CPU
  14500.  
  14501. AAA                    4
  14502. AAD                    19
  14503. AAD    imm8                    n/a
  14504. AAM                    17
  14505. AAM    imm8                    m/a
  14506. AAS                    4
  14507. ADC    AL,imm8                    2
  14508. ADC    AX,imm16                2
  14509. ADC    EAX,imm32                2
  14510. ADC    r/m8,imm8                2/7
  14511. ADC    r/m16,imm8                2/7
  14512. ADC    r/m32,imm8                2/7
  14513. ADC    r/m16,imm16                2/7
  14514. ADC    r/m32,imm32                2/7
  14515. ADC    r/m8,r8                    2/7
  14516. ADC    r/m16,r16                2/7
  14517. ADC    r/m32,r32                2/7
  14518. ADC    r8,r/m8                    2/6
  14519. ADC    r16,r/m16                2/6
  14520. ADC    r32,r/m32                2/6
  14521. ADD    AL,imm8                    2
  14522. ADD    AX,imm16                2
  14523. ADD    EAX,imm32                2
  14524. ADD    r/m8,imm8                2/7
  14525. ADD    r/m16,imm8                2/7
  14526. ADD    r/m32,imm8                2/7
  14527. ADD    r/m16,imm16                2/7
  14528. ADD    r/m32,imm32                2/7
  14529. ADD    r/m8,r8                    2/7
  14530. ADD    r/m16,r16                2/7
  14531. ADD    r/m32,r32                2/7
  14532. ADD    r8,r/m8                    2/6
  14533. ADD    r16,r/m16                2/6
  14534. ADD    r32,r/m32                2/6
  14535. AND    AL,imm8                    2
  14536. AND    AX,imm16                2
  14537. AND    EAX,imm32                2
  14538. AND    r/m8,imm8                2/7
  14539. AND    r/m16,imm8                2/7
  14540. AND    r/m32,imm8                2/7
  14541. AND    r/m16,imm16                2/7
  14542. AND    r/m32,imm32                2/7
  14543. AND    r/m8,r8                    2/7
  14544. AND    r/m16,r16                2/7
  14545. AND    r/m32,r32                2/7
  14546. AND    r8,r/m8                    2/6
  14547. AND    r16,r/m16                2/6
  14548. AND    r32,r/m32                2/6
  14549. ARPL    r/m16,r16               20/21
  14550. BOUND    r16,m16&16              10 or 44
  14551. BOUND    r32,m32&32              10 or 44
  14552. BSF    r16,r/m16                11+3*n
  14553. BSF    r32,r/m32                11+3*n
  14554. BSR    r16,r/m16                9+3*n
  14555. BSR    r32,r/m32                9+3*n
  14556. BT    r/m16,r16                 3/12
  14557. BT    r/m32,r32                 3/12
  14558. BT    r/m16,imm8                 3/6
  14559. BT    r/m16,imm8                 3/6
  14560. BTC    r/m16,r16                6/13
  14561. BTC    r/m32,r32                6/13
  14562. BTC    r/m16,imm8                6/8
  14563. BTC    r/m16,imm8                6/8
  14564. BTR    r/m16,r16                6/13
  14565. BTR    r/m32,r32                6/13
  14566. BTR    r/m16,imm8                6/8
  14567. BTR    r/m16,imm8                6/8
  14568. BTS    r/m16,r16                6/13
  14569. BTS    r/m32,r32                6/13
  14570. BTS    r/m16,imm8                6/8
  14571. BTS    r/m16,imm8                6/8
  14572. CALL    rel16                   7+m
  14573. CALL    r/m16                   7+m/10+m
  14574. CALL    ptr16:16               17+m
  14575. CALL    ptr16:16    (PM, direct segment)      34+m
  14576. CALL    ptr16:16    (PM, via call gate, same p52+m
  14577. CALL    ptr16:16    (PM, via call gate, more p86+m
  14578. CALL    ptr16:16    (PM, via call gate, more p94+m+4*x
  14579. CALL    m16:16                   22+m
  14580. CALL    m16:16    (PM, direct segment)        38+m
  14581. CALL    m16:16    (PM, via gate, same priveleg56+m
  14582. CALL    m16:16    (PM, via gate, more priveleg90+m
  14583. CALL    m16:16    (PM, via gate, more priveleg98+m+4*x
  14584. CALL    rel32                   7+m
  14585. CALL    r/m32                   7+m/10+m
  14586. CALL    ptr16:32               17+m
  14587. CALL    ptr16:32    (PM, direct segment)      34+m
  14588. CALL    ptr16:32    (PM, via gate, same privel52+m
  14589. CALL    ptr16:32    (PM, via gate, more privel86+m
  14590. CALL    ptr16:32    (PM, via gate, more privel94+m+4*x
  14591. CALL    m16:32                   22+m
  14592. CALL    m16:32    (PM, direct segment)        38+m
  14593. CALL    m16:32    (PM, via gate, same priveleg56+m
  14594. CALL    m16:32    (PM, via gate, more priveleg90+m
  14595. CALL    m16:32    (PM, via gate, more priveleg98+m+4*x
  14596. CBW                    3
  14597. CWDE                    2
  14598. CLC                    2
  14599. CLD                    2
  14600. CLI                    3
  14601. CLTS                    5
  14602. CMC                    2
  14603. CMP    AL,imm8                    2
  14604. CMP    AX,imm16                2
  14605. CMP    EAX,imm32                2
  14606. CMP    r/m8,imm8                2/5
  14607. CMP    r/m16,imm8                2/5
  14608. CMP    r/m32,imm8                2/5
  14609. CMP    r/m16,imm16                2/5
  14610. CMP    r/m32,imm32                2/5
  14611. CMP    r/m8,r8                    2/5
  14612. CMP    r/m16,r16                2/5
  14613. CMP    r/m32,r32                2/5
  14614. CMP    r8,r/m8                    2/6
  14615. CMP    r16,r/m16                2/6
  14616. CMP    r32,r/m32                2/6
  14617. CMPSB                    10
  14618. CMPSW                    10
  14619. CMPSD                    10
  14620. CWD                    2
  14621. CDQ                    2
  14622. DAA                    4
  14623. DAS                    4
  14624. DEC    r/m8                    2/6
  14625. DEC    r/m16                    2/6
  14626. DEC    r/m32                    2/6
  14627. DEC    r16                    2
  14628. DEC    r32                    2
  14629. DIV    r/m8                    14/17
  14630. DIV    r/m16                    22/25
  14631. DIV    r/m32                    38/41
  14632. ESC    imm4,r/m                f
  14633. ENTER    imm16,0                  10
  14634. ENTER    imm16,1                  12
  14635. ENTER    imm16,imm8              15+4*(n-1)
  14636. HLT                    5
  14637. IBTS    r/m16,AX,CL,r16               12/19
  14638. IBTS    r/m32,EAX,CL,r32           12/19
  14639. IDIV    r/m8                   19/22
  14640. IDIV    r/m16                   27/30
  14641. IDIV    r/m32                   43/46
  14642. IMUL    r/m8                   12-17/15-20
  14643. IMUL    r/m16                   12-25/15-28
  14644. IMUL    r/m32                   12-41/15-44
  14645. IMUL    r16,r/m16               12-17/15-20
  14646. IMUL    r32,r/m32               12-41/15-44
  14647. IMUL    r16,imm8               12-26/14-27
  14648. IMUL    r32,imm8               13-42/14-43
  14649. IMUL    r16,imm16               9/22-12/25
  14650. IMUL    r32,imm32               9/38-12/41
  14651. IMUL    r16,r/m16,imm8               9-14/12-17
  14652. IMUL    r32,r/m32,imm8               9-14/12-17
  14653. IMUL    r16,r/m16,imm16               9-22/12-25
  14654. IMUL    r32,r/m32,imm32               9-38/12-41
  14655. IN    AL,imm8                     12
  14656. IN    AL,imm8    (PM, CPL <= IOPL)         6/26
  14657. IN    AL,imm8 (VM)                 26
  14658. IN    AX,imm8                     12
  14659. IN    AX,imm8    (PM, CPL <= IOPL)           6/26
  14660. IN    AX,imm8    (VM)                 26
  14661. IN    EAX,imm8                 12
  14662. IN    EAX,imm8    (PM, CPL <= IOPL)          6/26
  14663. IN    EAX,imm8    (VM)                26
  14664. IN    AL,DX                     13
  14665. IN    AL,DX    (PM, CPL <= IOPL)           7/27
  14666. IN    AL,DX    (VM)                   27
  14667. IN    AX,DX                     13
  14668. IN    AX,DX    (PM, CPL <= IOPL)           7/27
  14669. IN    AX,DX    (VM)                   27
  14670. IN    EAX,DX                     13
  14671. IN    EAX,DX    (PM, CPL <= IOPL)          7/27
  14672. IN    EAX,DX    (VM)                  27
  14673. INC    r/m8                    2/6
  14674. INC    r/m16                    2/6
  14675. INC    r/m32                    2/6
  14676. INC    r16                    2
  14677. INC    r32                    2
  14678. INSB                    15
  14679. INSW                    15
  14680. INSD                    15
  14681. INT    3                    33
  14682. INT    3    (PM, same privilege)          59
  14683. INT    3    (PM, more privelege)          99
  14684. INT    imm8                    37
  14685. INT    imm8    (PM, same privilege)           59
  14686. INT    imm8    (PM, more privelege)           99
  14687. INTO                    3/35
  14688. INTO    (PM, same privilege)           3/59
  14689. INTO    (PM, more privelege)           3/99
  14690. IRET                    22/38
  14691. IRET    (PM, to same privilege)           22/38
  14692. IRET    (PM, to lesser privilege)       82
  14693. IRETD                    22/38
  14694. IRETD    (PM, to same privilege)          22/38
  14695. IRETD    (PM, to lesser privilege)      82
  14696. Jcc    rel8                    7+m/3
  14697. Jcc    rel16                    7+m/3
  14698. Jcc    rel32                    7+m/3
  14699. JCXZ    rel8                   9+m/5
  14700. JECXZ    rel8                  9+m/5
  14701. JMP    rel8                    7+m
  14702. JMP    rel16                    7+m
  14703. JMP    r/m16                    7+m/10+m
  14704. JMP    ptr16:16                12/27+m
  14705. JMP    ptr16:16    (PM, direct segment)       12/27+m
  14706. JMP    ptr16:16    (PM, via call gate, same pr45+m
  14707. JMP    m16:16                    43/31+m
  14708. JMP    m16:16    (PM, direct segment)         43/31+m
  14709. JMP    m16:16    (PM, via call gate, same priv49+m
  14710. JMP    rel32                    7+m
  14711. JMP    r/m32                    (7/10)+m
  14712. JMP    ptr16:32                12/27+m
  14713. JMP    ptr16:32    (PM, direct segment)       12/27+m
  14714. JMP    ptr16:32    (PM, via call gate, same pr45+m
  14715. JMP    m16:32                    43/31+m
  14716. JMP    m16:32    (PM, direct segment)         43/31+m
  14717. JMP    m16:32    (PM, via call gate, same priv49+m
  14718. LAHF                    2
  14719. LAR    r16,r/m16                15/16
  14720. LAR    r32,r/m32                15/16
  14721. LDS    r16,m16:16                7/22
  14722. LDS    r32,m16:32                7/22
  14723. LDS    r16,m16:16    (PM)             7/22
  14724. LDS    r32,m16:32    (PM)             f
  14725. LSS    r16,m16:16                7/22
  14726. LSS    r32,m16:32                7/22
  14727. LSS    r16,m16:16    (PM)             7/22
  14728. LSS    r32,m16:32    (PM)                f
  14729. LES    r16,m16:16                7/22
  14730. LES    r32,m16:32                7/22
  14731. LES    r16,m16:16    (PM)             7/22
  14732. LES    r32,m16:32    (PM)             f
  14733. LFS    r16,m16:16                7/25
  14734. LFS    r32,m16:32                7/25
  14735. LFS    r16,m16:16    (PM)             7/22
  14736. LFS    r32,m16:32    (PM)             f
  14737. LGS    r16,m16:16                7/25
  14738. LGS    r32,m16:32                7/25
  14739. LGS    r16,m16:16    (PM)             7/22
  14740. LGS    r32,m16:32    (PM)             f
  14741. LEA    r16,m                    2
  14742. LEA    r32,m                    2
  14743. LEAVE                    4
  14744. LGDT    m16&32                   11
  14745. LIDT    m16&32                   11
  14746. LLDT    r/m16                   20
  14747. LMSW    r/m16                   10/13
  14748. LOADALL                    f
  14749. LODSB                    5
  14750. LODSW                    5
  14751. LODSD                    5
  14752. LOOP    rel8                   11+m
  14753. LOOPE    rel8                  11+m
  14754. LOOPNE    rel8                 11+m
  14755. LSL    r16,r/m16                20/21
  14756. LSL    r32,r/m32                20/21
  14757. LTR    r/m16                    23/27
  14758. MOV    r/m8,r8                    2/2
  14759. MOV    r/m16,r16                2/2
  14760. MOV    r/m32,r32                2/2
  14761. MOV    r8,r/m8                    2/4
  14762. MOV    r16,r/m16                2/4
  14763. MOV    r32,r/m32                2/4
  14764. MOV    r/m16,sreg                2/2
  14765. MOV    sreg,r/m16                2/5 18/19
  14766. MOV    sreg,r/m16    (PM)             f
  14767. MOV    AL,moffs8                4
  14768. MOV    AX,moffs16                4
  14769. MOV    EAX,moffs32                4
  14770. MOV    moffs8,AL                2
  14771. MOV    moffs16,AX                2
  14772. MOV    moffs32,EAX                2
  14773. MOV    r8,imm8                    2
  14774. MOV    r16,imm16                2
  14775. MOV    r32,imm32                2
  14776. MOV    r/m8,imm8                2/2
  14777. MOV    r/m16,imm16                2/2
  14778. MOV    r/m32,imm32                2/2
  14779. MOV    CR0,r32                    10
  14780. MOV    CR2,r32                    4/5
  14781. MOV    CR3,r32                    4/5
  14782. MOV    CR4,r32                    f
  14783. MOV    r32,CRi                    6
  14784. MOV    r32,DR0-DR3                22
  14785. MOV    r32,DR4-DR5                f
  14786. MOV    r32,DR6-DR7                14
  14787. MOV    DR0-DR3,r32                22
  14788. MOV    DR4-DR5,r32                f
  14789. MOV    DR6-DR7,r32                16
  14790. MOV    r32,TR4-TR7                12
  14791. MOV    TR4-TR7,r32                12
  14792. MOVSB                    7
  14793. MOVSW                    7
  14794. MOVSD                    7
  14795. MOVSX    r16,r/m8              3/6
  14796. MOVSX    r32,r/m8              3/6
  14797. MOVSX    r32,r/m16              3/6
  14798. MOVZX    r16,r/m8              3/6
  14799. MOVZX    r32,r/m8              3/6
  14800. MOVZX    r32,r/m16              3/6
  14801. MUL    r/m8                    9/14-12/17
  14802. MUL    r/m16                    9/22-12/25
  14803. MUL    r/m32                    9/38-12/41
  14804. NEG    r/m8                    2/6
  14805. NEG    r/m16                    2/6
  14806. NEG    r/m32                    2/6
  14807. NOP                    3
  14808. NOT    r/m8                    2/6
  14809. NOT    r/m16                    2/6
  14810. NOT    r/m32                    2/6
  14811. OR    AL,imm8                     2
  14812. OR    AX,imm16                 2
  14813. OR    EAX,imm32                 2
  14814. OR    r/m8,imm8                 2/7
  14815. OR    r/m16,imm8                 2/7
  14816. OR    r/m32,imm8                 2/7
  14817. OR    r/m16,imm16                 2/7
  14818. OR    r/m32,imm32                 2/7
  14819. OR    r/m8,r8                     2/7
  14820. OR    r/m16,r16                 2/7
  14821. OR    r/m32,r32                 2/7
  14822. OR    r8,r/m8                     2/6
  14823. OR    r16,r/m16                 2/6
  14824. OR    r32,r/m32                 2/6
  14825. OUT    imm8,AL                    10
  14826. OUT    imm8,AL    (PM, CPL <= IOPL)        4/24
  14827. OUT    imm8,AL    (VM)                4/24
  14828. OUT    imm8,AX                    10
  14829. OUT    imm8,AX    (PM, CPL <= IOPL)        4/24
  14830. OUT    imm8,AX    (VM)                4/24
  14831. OUT    imm8,EAX                10
  14832. OUT    imm8,EAX    (PM, CPL <= IOPL)       4/24
  14833. OUT    imm8,EAX    (VM)               4/24
  14834. OUT    DX,AL                    11
  14835. OUT    DX,AL    (PM, CPL <= IOPL)          5/25
  14836. OUT    DX,AL    (VM)                  5/25
  14837. OUT    DX,AX                    11
  14838. OUT    DX,AX    (PM, CPL <= IOPL)          5/25
  14839. OUT    DX,AX    (VM)                  5/25
  14840. OUT    DX,EAX                    11
  14841. OUT    DX,EAX    (PM, CPL <= IOPL)         5/25
  14842. OUT    DX,EAX    (VM)                 5/25
  14843. OUTSB                    14
  14844. OUTSW                    14
  14845. OUTSD                    14
  14846. POP    m16                    5
  14847. POP    m32                    5
  14848. POP    r16                    4
  14849. POP    r32                    4
  14850. POP    sreg                    7/21
  14851. POP    sreg    (PM)                   7/21
  14852. POPA                    24
  14853. POPAD                    24
  14854. POPF                    5
  14855. POPF    (PM)                   5
  14856. POPF    (VM)                   ??
  14857. POPFD                    5
  14858. POPFD    (PM)                  5
  14859. POPFD    (VM)                  ??
  14860. PUSH    r/m16                   5
  14861. PUSH    r/m32                   5
  14862. PUSH    r16                   2
  14863. PUSH    r32                   2
  14864. PUSH    imm8                   2
  14865. PUSH    imm16                   2
  14866. PUSH    imm32                   2
  14867. PUSH    sreg                   2
  14868. PUSHA                    18
  14869. PUSHAD                    18
  14870. PUSHF                    4
  14871. PUSHF    (PM)                  4
  14872. PUSHF    (VM)                  4 ??
  14873. PUSHFD                    4
  14874. PUSHFD    (PM)                 4
  14875. PUSHFD    (VM)                 4 ??
  14876. RCL    r/m8,1                    9/10
  14877. RCL    r/m16,1                    9/10
  14878. RCL    r/m32,1                    9/10
  14879. RCL    r/m8,CL                    9/10
  14880. RCL    r/m16,CL                9/10
  14881. RCL    r/m32,CL                9/10
  14882. RCL    r/m8,imm8                9/10
  14883. RCL    r/m16,imm8                9/10
  14884. RCL    r/m32,imm8                9/10
  14885. RCR    r/m8,1                    9/10
  14886. RCR    r/m16,1                    9/10
  14887. RCR    r/m32,1                    9/10
  14888. RCR    r/m8,CL                    9/10
  14889. RCR    r/m16,CL                9/10
  14890. RCR    r/m32,CL                9/10
  14891. RCR    r/m8,imm8                9/10
  14892. RCR    r/m16,imm8                9/10
  14893. RCR    r/m32,imm8                9/10
  14894. ROL    r/m8,1                    3/7
  14895. ROL    r/m16,1                    3/7
  14896. ROL    r/m32,1                    3/7
  14897. ROL    r/m8,CL                    3/7
  14898. ROL    r/m16,CL                3/7
  14899. ROL    r/m32,CL                3/7
  14900. ROL    r/m8,imm8                3/7
  14901. ROL    r/m16,imm8                3/7
  14902. ROL    r/m32,imm8                3/7
  14903. ROR    r/m8,1                    3/7
  14904. ROR    r/m16,1                    3/7
  14905. ROR    r/m32,1                    3/7
  14906. ROR    r/m8,CL                    3/7
  14907. ROR    r/m16,CL                3/7
  14908. ROR    r/m32,CL                3/7
  14909. ROR    r/m8,imm8                3/7
  14910. ROR    r/m16,imm8                3/7
  14911. ROR    r/m32,imm8                3/7
  14912. RDTSC                    f
  14913. RET    (near)                    10+m
  14914. RET    (far)                    18+m
  14915. RET    (PM, far, same PL)            32+m
  14916. RET    (PM, far, different PL)            68
  14917. RET    imm16    (near)                  10+m
  14918. RET    imm16    (far)                  18+m
  14919. RET    imm16    (PM, far, same PL)          32+m
  14920. RET    imm16    (PM, far, different PL)          68
  14921. SAHF                    3
  14922. SAL    r/m8,1                    3/7
  14923. SAL    r/m16,1                    3/7
  14924. SAL    r/m32,1                    3/7
  14925. SAL    r/m8,CL                    3/7
  14926. SAL    r/m16,CL                3/7
  14927. SAL    r/m32,CL                3/7
  14928. SAL    r/m8,imm8                3/7
  14929. SAL    r/m16,imm8                3/7
  14930. SAL    r/m32,imm8                3/7
  14931. SAR    r/m8,1                    3/7
  14932. SAR    r/m16,1                    3/7
  14933. SAR    r/m32,1                    3/7
  14934. SAR    r/m8,CL                    3/7
  14935. SAR    r/m16,CL                3/7
  14936. SAR    r/m32,CL                3/7
  14937. SAR    r/m8,imm8                3/7
  14938. SAR    r/m16,imm8                3/7
  14939. SAR    r/m32,imm8                3/7
  14940. SHL    r/m8,1                    3/7
  14941. SHL    r/m16,1                    3/7
  14942. SHL    r/m32,1                    3/7
  14943. SHL    r/m8,CL                    3/7
  14944. SHL    r/m16,CL                3/7
  14945. SHL    r/m32,CL                3/7
  14946. SHL    r/m8,imm8                3/7
  14947. SHL    r/m16,imm8                3/7
  14948. SHL    r/m32,imm8                3/7
  14949. SHR    r/m8,1                    3/7
  14950. SHR    r/m16,1                    3/7
  14951. SHR    r/m32,1                    3/7
  14952. SHR    r/m8,CL                    3/7
  14953. SHR    r/m16,CL                3/7
  14954. SHR    r/m32,CL                3/7
  14955. SHR    r/m8,imm8                3/7
  14956. SHR    r/m16,imm8                37/
  14957. SHR    r/m32,imm8                3/7
  14958. SBB    AL,imm8                    2
  14959. SBB    AX,imm16                2
  14960. SBB    EAX,imm32                2
  14961. SBB    r/m8,imm8                2/7
  14962. SBB    r/m16,imm8                2/7
  14963. SBB    r/m32,imm8                2/7
  14964. SBB    r/m16,imm16                2/7
  14965. SBB    r/m32,imm32                2/7
  14966. SBB    r/m8,r8                    2/7
  14967. SBB    r/m16,r16                2/7
  14968. SBB    r/m32,r32                2/7
  14969. SBB    r8,r/m8                    2/6
  14970. SBB    r16,r/m16                2/6
  14971. SBB    r32,r/m32                2/6
  14972. SCASB                    7
  14973. SCASW                    7
  14974. SCASD                    7
  14975. SETALC                    f
  14976. SETcc    r/m8                  4/5
  14977. SGDT    m16&32                   9
  14978. SIDT    m16&32                   9
  14979. SHLD    r/m16,r16,imm8               3/7
  14980. SHLD    r/m32,r32,imm8               3/7
  14981. SHLD    r/m16,r16,CL               3/7
  14982. SHLD    r/m32,r32,CL               3/7
  14983. SHRD    r/m16,r16,imm8               3/7
  14984. SHRD    r/m32,r32,imm8               3/7
  14985. SHRD    r/m16,r16,CL               3/7
  14986. SHRD    r/m32,r32,CL               3/7
  14987. SLDT    r/m16                   2/2
  14988. SLDT    r/m32                   f
  14989. SMINT                    f
  14990. SMSW    r/m16                   2/3 2/2
  14991. STC                    2
  14992. STD                    2
  14993. STI                    2
  14994. STOSB                    4
  14995. STOSW                    4
  14996. STOSD                    4
  14997. STR    r/m16                    23/27
  14998. SUB    AL,imm8                    2/8
  14999. SUB    AX,imm16                2/7
  15000. SUB    EAX,imm32                2/7
  15001. SUB    r/m8,imm8                2/7
  15002. SUB    r/m16,imm8                2/7
  15003. SUB    r/m32,imm8                2/7
  15004. SUB    r/m16,imm16                2/7
  15005. SUB    r/m32,imm32                2/7
  15006. SUB    r/m8,r8                    2/7
  15007. SUB    r/m16,r16                2/7
  15008. SUB    r/m32,r32                2/7
  15009. SUB    r8,r/m8                    2/6
  15010. SUB    r16,r/m16                2/6
  15011. SUB    r32,r/m32                2/6
  15012. TEST    AL,imm8                   2
  15013. TEST    AX,imm16               2
  15014. TEST    EAX,imm32               2
  15015. TEST    r/m8,imm8               2/5
  15016. TEST    r/m16,imm16               2/5
  15017. TEST    r/m32,imm32               2/5
  15018. TEST    r/m8,r8                   2/5
  15019. TEST    r/m16,r16               2/5
  15020. TEST    r/m32,r32               2/5
  15021. UMOV    r8,r/m8                   f
  15022. UMOV    r16,r/m16               f
  15023. UMOV    r32,r/m32               f
  15024. UMOV    r/m8,r8                   f
  15025. UMOV    r/m16,r16               f
  15026. UMOV    r/m32,r32               f
  15027. VERR    r/m16                   10/11
  15028. VERW    r/m16                   15/16
  15029. WAIT                    6min
  15030. XBTS    r16,r/m16,AX,CL               6/13
  15031. XBTS    r32,r/m32,EAX,CL           6/13
  15032. XCHG    AX,r16                   3
  15033. XCHG    EAX,r32                   3
  15034. XCHG    r/m8,r8                   3/5
  15035. XCHG    r/m16,r16               3/5
  15036. XCHG    r/m32,r32               3/5
  15037. XLAT                    5
  15038. XOR    AL,imm8                    2
  15039. XOR    AX,imm16                2
  15040. XOR    EAX,imm32                2
  15041. XOR    r/m8,imm8                2
  15042. XOR    r/m16,imm8                2/7
  15043. XOR    r/m32,imm8                2/7
  15044. XOR    r/m16,imm16                2/7
  15045. XOR    r/m32,imm32                2/7
  15046. XOR    r/m8,r8                    2/7
  15047. XOR    r/m16,r16                2/7
  15048. XOR    r/m32,r32                2/7
  15049. XOR    r8,r/m8                    2/6
  15050. XOR    r16,r/m16                2/6
  15051. XOR    r32,r/m32                2/6
  15052. (END)
  15053.  
  15054. ----------------------------------------------------------
  15055. APPENDIX Y5  -    Vendor Instruction Time for Intel i486DX CPU
  15056.  
  15057. AAA                    3
  15058. AAD                    14
  15059. AAD    imm8                    n/a
  15060. AAM                    15
  15061. AAM    imm8                    n/a
  15062. AAS                    3
  15063. ADC    AL,imm8                    1
  15064. ADC    AX,imm16                1
  15065. ADC    EAX,imm32                1
  15066. ADC    r/m8,imm8                1/3
  15067. ADC    r/m16,imm8                1/3
  15068. ADC    r/m32,imm8                1/3
  15069. ADC    r/m16,imm16                1/3
  15070. ADC    r/m32,imm32                f
  15071. ADC    r/m8,r8                    1/3
  15072. ADC    r/m16,r16                1/3
  15073. ADC    r/m32,r32                f
  15074. ADC    r8,r/m8                    1/2
  15075. ADC    r16,r/m16                1/2
  15076. ADC    r32,r/m32                1/2
  15077. ADD    AL,imm8                    1
  15078. ADD    AX,imm16                1
  15079. ADD    EAX,imm32                1
  15080. ADD    r/m8,imm8                1/3
  15081. ADD    r/m16,imm8                1/3
  15082. ADD    r/m32,imm8                1/3
  15083. ADD    r/m16,imm16                1/3
  15084. ADD    r/m32,imm32                1/3
  15085. ADD    r/m8,r8                    1/3
  15086. ADD    r/m16,r16                1/3
  15087. ADD    r/m32,r32                1/3
  15088. ADD    r8,r/m8                    1/2
  15089. ADD    r16,r/m16                1/2
  15090. ADD    r32,r/m32                1/2
  15091. AND    AL,imm8                    1
  15092. AND    AX,imm16                1
  15093. AND    EAX,imm32                1
  15094. AND    r/m8,imm8                1/3
  15095. AND    r/m16,imm8                1/3
  15096. AND    r/m32,imm8                1/3
  15097. AND    r/m16,imm16                1/3
  15098. AND    r/m32,imm32                1/3
  15099. AND    r/m8,r8                    1/3
  15100. AND    r/m16,r16                1/3
  15101. AND    r/m32,r32                1/3
  15102. AND    r8,r/m8                    1/2
  15103. AND    r16,r/m16                1/2
  15104. AND    r32,r/m32                1/2
  15105. ARPL    r/m16,r16               9/9
  15106. BOUND    r16,m16&16              7
  15107. BOUND    r32,m32&32              7
  15108. BSF    r16,r/m16                6-42/7-43
  15109. BSF    r32,r/m32                6-42/7-43
  15110. BSR    r16,r/m16                6-103/7-104
  15111. BSR    r32,r/m32                6-103/7-104
  15112. BSWAP    r32                  1
  15113. BT    r/m16,r16                 3/8
  15114. BT    r/m32,r32                 3/8
  15115. BT    r/m16,imm8                 3/3
  15116. BT    r/m16,imm8                 3/3
  15117. BTC    r/m16,r16                6/13
  15118. BTC    r/m32,r32                6/13
  15119. BTC    r/m16,imm8                6/8
  15120. BTC    r/m16,imm8                6/8
  15121. BTR    r/m16,r16                6/13
  15122. BTR    r/m32,r32                6/13
  15123. BTR    r/m16,imm8                6/8
  15124. BTR    r/m16,imm8                6/8
  15125. BTS    r/m16,r16                6/13
  15126. BTS    r/m32,r32                6/13
  15127. BTS    r/m16,imm8                6/8
  15128. BTS    r/m16,imm8                6/8
  15129. CALL    rel16                   3
  15130. CALL    r/m16                   5/5
  15131. CALL    ptr16:16               18
  15132. CALL    ptr16:16    (PM, direct segment)      20
  15133. CALL    ptr16:16    (PM, via call gate, same p35
  15134. CALL    ptr16:16    (PM, via call gate, more p69
  15135. CALL    ptr16:16    (PM, via call gate, more p77+4*p
  15136. CALL    m16:16                   17
  15137. CALL    m16:16    (PM, direct segment)        20
  15138. CALL    m16:16    (PM, via gate, same priveleg35
  15139. CALL    m16:16    (PM, via gate, more priveleg69
  15140. CALL    m16:16    (PM, via gate, more priveleg77+4*p
  15141. CALL    rel32                   3
  15142. CALL    r/m32                   5/5
  15143. CALL    ptr16:32               18
  15144. CALL    ptr16:32    (PM, direct segment)      20
  15145. CALL    ptr16:32    (PM, via gate, same privel35
  15146. CALL    ptr16:32    (PM, via gate, more privel69
  15147. CALL    ptr16:32    (PM, via gate, more privel77+4*p
  15148. CALL    m16:32                   17
  15149. CALL    m16:32    (PM, direct segment)        20
  15150. CALL    m16:32    (PM, via gate, same priveleg35
  15151. CALL    m16:32    (PM, via gate, more priveleg69
  15152. CALL    m16:32    (PM, via gate, more priveleg77+4*p
  15153. CBW                    3
  15154. CWDE                    3
  15155. CLC                    2
  15156. CLD                    2
  15157. CLI                    5
  15158. CLTS                    7
  15159. CMC                    2
  15160. CMOVcc    r16,r/m16             f
  15161. CMOVcc    r32,r/m32             f
  15162. CMP    AL,imm8                    1
  15163. CMP    AX,imm16                1
  15164. CMP    EAX,imm32                1
  15165. CMP    r/m8,imm8                1/2
  15166. CMP    r/m16,imm8                1/2
  15167. CMP    r/m32,imm8                1/2
  15168. CMP    r/m16,imm16                1/2
  15169. CMP    r/m32,imm32                1/2
  15170. CMP    r/m8,r8                    1/2
  15171. CMP    r/m16,r16                1/2
  15172. CMP    r/m32,r32                1/2
  15173. CMP    r8,r/m8                    1/3
  15174. CMP    r16,r/m16                1/3
  15175. CMP    r32,r/m32                1/3
  15176. CMPSB                    8
  15177. CMPSW                    8
  15178. CMPSD                    8
  15179. CMPXCHG    r/m8,r8                6/7 6/10
  15180. CMPXCHG    r/m16,r16            6/7 6/10
  15181. CMPXCHG r/m32,r32            6/7 6/10
  15182. CPUID                    (SL Enhanced only)
  15183. CWD                    3
  15184. CDQ                    3
  15185. DAA                    2
  15186. DAS                    2
  15187. DEC    r/m8                    1/3
  15188. DEC    r/m16                    1/3
  15189. DEC    r/m32                    1/3
  15190. DEC    r16                    1
  15191. DEC    r32                    1
  15192. DIV    r/m8                    16/16
  15193. DIV    r/m16                    24/24
  15194. DIV    r/m32                    40/40
  15195. ESC    imm4,r/m                f
  15196. ENTER    imm16,0                  14
  15197. ENTER    imm16,1                  17
  15198. ENTER    imm16,imm8              17+3*n
  15199. HLT                    4
  15200. IDIV    r/m8                   19/20
  15201. IDIV    r/m16                   27/28
  15202. IDIV    r/m32                   43/44
  15203. IMUL    r/m8                   13-18/13-18
  15204. IMUL    r/m16                   13-26/13-26
  15205. IMUL    r/m32                   12-42/13-42
  15206. IMUL    r16,r/m16               13-26/13-26
  15207. IMUL    r32,r/m32               13-42/13-42
  15208. IMUL    r16,imm8               13-26
  15209. IMUL    r32,imm8               13-26
  15210. IMUL    r16,imm16               13-26/13-26
  15211. IMUL    r32,imm32               13-42/13-42
  15212. IMUL    r16,r/m16,imm8               13-26/13-26
  15213. IMUL    r32,r/m32,imm8               13-42/13-42
  15214. IMUL    r16,r/m16,imm16               13-26/13-26
  15215. IMUL    r32,r/m32,imm32               13-42/13-42
  15216. IN    AL,imm8                     14
  15217. IN    AL,imm8    (PM, CPL <= IOPL)         8/28
  15218. IN    AL,imm8 (VM)                 27
  15219. IN    AX,imm8                     14
  15220. IN    AX,imm8    (PM, CPL <= IOPL)           8/28
  15221. IN    AX,imm8    (VM)                 27
  15222. IN    EAX,imm8                 14
  15223. IN    EAX,imm8    (PM, CPL <= IOPL)          8/28
  15224. IN    EAX,imm8    (VM)                27
  15225. IN    AL,DX                     14
  15226. IN    AL,DX    (PM, CPL <= IOPL)           8/28
  15227. IN    AL,DX    (VM)                   27
  15228. IN    AX,DX                     14
  15229. IN    AX,DX    (PM, CPL <= IOPL)           8/28
  15230. IN    AX,DX    (VM)                   2
  15231. IN    EAX,DX                     14
  15232. IN    EAX,DX    (PM, CPL <= IOPL)          8/28
  15233. IN    EAX,DX    (VM)                  27
  15234. INC    r/m8                    1/3
  15235. INC    r/m16                    1/3
  15236. INC    r/m32                    1/3
  15237. INC    r16                    1
  15238. INC    r32                    1
  15239. INSB                    17
  15240. INSW                    17
  15241. INSD                    17
  15242. INT    3                    26
  15243. INT    3    (PM, same privilege)          44
  15244. INT    3    (PM, more privelege)          71
  15245. INT    imm8                    30
  15246. INT    imm8    (PM, same privilege)           44
  15247. INT    imm8    (PM, more privelege)           71
  15248. INTO                    3/28
  15249. INTO    (PM, same privilege)           3/46
  15250. INTO    (PM, more privelege)           3/73
  15251. INVD                    4
  15252. INVLPG    m                 12
  15253. IRET                    15
  15254. IRET    (PM, to same privilege)           15
  15255. IRET    (PM, to lesser privilege)       36
  15256. IRETD                    15
  15257. IRETD    (PM, to same privilege)          15
  15258. IRETD    (PM, to lesser privilege)      36
  15259. Jcc    rel8                    3/1
  15260. Jcc    rel16                    3/1
  15261. Jcc    rel32                    3/1
  15262. JCXZ    rel8                   8/5
  15263. JECXZ    rel8                  8/5
  15264. JMP    rel8                    3
  15265. JMP    rel16                    3
  15266. JMP    r/m16                    5/5
  15267. JMP    ptr16:16                17/19
  15268. JMP    ptr16:16    (PM, direct segment)       17/19
  15269. JMP    ptr16:16    (PM, via call gate, same pr32
  15270. JMP    m16:16                    13/18
  15271. JMP    m16:16    (PM, direct segment)         13/18
  15272. JMP    m16:16    (PM, via call gate, same priv31
  15273. JMP    rel32                    3
  15274. JMP    r/m32                    5/5
  15275. JMP    ptr16:32                13/18
  15276. JMP    ptr16:32    (PM, direct segment)       13/18
  15277. JMP    ptr16:32    (PM, via call gate, same pr31
  15278. JMP    m16:32                    13/18
  15279. JMP    m16:32    (PM, direct segment)         13/18
  15280. JMP    m16:32    (PM, via call gate, same priv31
  15281. LAHF                    3
  15282. LAR    r16,r/m16                11/11
  15283. LAR    r32,r/m32                11/11
  15284. LDS    r16,m16:16                6/12p
  15285. LDS    r32,m16:32                6/12p
  15286. LDS    r16,m16:16    (PM)             f
  15287. LDS    r32,m16:32    (PM)             f
  15288. LSS    r16,m16:16                7/22p
  15289. LSS    r32,m16:32                7/22p
  15290. LSS    r16,m16:16    (PM)             f
  15291. LSS    r32,m16:32    (PM)                f
  15292. LES    r16,m16:16                7/22p
  15293. LES    r32,m16:32                7/22p
  15294. LES    r16,m16:16    (PM)             f
  15295. LES    r32,m16:32    (PM)             f
  15296. LFS    r16,m16:16                6/12p
  15297. LFS    r32,m16:32                6/12p
  15298. LFS    r16,m16:16    (PM)             f
  15299. LFS    r32,m16:32    (PM)             f
  15300. LGS    r16,m16:16                6/12p
  15301. LGS    r32,m16:32                6/12p
  15302. LGS    r16,m16:16    (PM)             f
  15303. LGS    r32,m16:32    (PM)             f
  15304. LEA    r16,m                    1
  15305. LEA    r32,m                    1
  15306. LEAVE                    5
  15307. LGDT    m16&32                   11
  15308. LIDT    m16&32                   11
  15309. LLDT    r/m16                   11/11
  15310. LMSW    r/m16                   13/13
  15311. LOADALL                    f
  15312. LODSB                    5
  15313. LODSW                    5
  15314. LODSD                    5
  15315. LOOP    rel8                   2,6
  15316. LOOPE    rel8                  9,6
  15317. LOOPNE    rel8                 9,6
  15318. LSL    r16,r/m16                10/10
  15319. LSL    r32,r/m32                10/10
  15320. LTR    r/m16                    20/20
  15321. MOV    r/m8,r8                    1
  15322. MOV    r/m16,r16                1
  15323. MOV    r/m32,r32                1
  15324. MOV    r8,r/m8                    1
  15325. MOV    r16,r/m16                1
  15326. MOV    r32,r/m32                1
  15327. MOV    r/m16,sreg                3/3
  15328. MOV    sreg,r/m16                3/9
  15329. MOV    sreg,r/m16    (PM)             f
  15330. MOV    AL,moffs8                1
  15331. MOV    AX,moffs16                1
  15332. MOV    EAX,moffs32                1
  15333. MOV    moffs8,AL                1
  15334. MOV    moffs16,AX                1
  15335. MOV    moffs32,EAX                1
  15336. MOV    r8,imm8                    1
  15337. MOV    r16,imm16                1
  15338. MOV    r32,imm32                1
  15339. MOV    r/m8,imm8                1
  15340. MOV    r/m16,imm16                1
  15341. MOV    r/m32,imm32                1
  15342. MOV    CR0,r32                    16
  15343. MOV    CR2,r32                    4
  15344. MOV    CR3,r32                    4
  15345. MOV    CR4,r32                    (SL Enhanced only)
  15346. MOV    r32,CRi                    4
  15347. MOV    r32,DR0-DR3                10
  15348. MOV    r32,DR4-DR5                9 (alias to DR6-DR7)
  15349. MOV    r32,DR6-DR7                10
  15350. MOV    DR0-DR3,r32                11
  15351. MOV    DR4-DR5,r32                10 (alias to DR6-DR7)
  15352. MOV    DR6-DR7,r32                11
  15353. MOV    r32,TR4-TR7                4
  15354. MOV    r32,TR3                    4
  15355. MOV    TR3,r32                    6
  15356. MOV    TR4-TR7,r32                f
  15357. MOVSB                    7
  15358. MOVSW                    7
  15359. MOVSD                    7
  15360. MOVSX    r16,r/m8              3/3
  15361. MOVSX    r32,r/m8              3/3
  15362. MOVSX    r32,r/m16              3/3
  15363. MOVZX    r16,r/m8              3/3
  15364. MOVZX    r32,r/m8              3/3
  15365. MOVZX    r32,r/m16              3/3
  15366. MUL    r/m8                    13-18/
  15367. MUL    r/m16                    13-26/
  15368. MUL    r/m32                    13-42/
  15369. NEG    r/m8                    1/3
  15370. NEG    r/m16                    1/3
  15371. NEG    r/m32                    1/3
  15372. NOP                    1
  15373. NOT    r/m8                    1/3
  15374. NOT    r/m16                    1/3
  15375. NOT    r/m32                    1/3
  15376. OR    AL,imm8                     1
  15377. OR    AX,imm16                 1
  15378. OR    EAX,imm32                 1
  15379. OR    r/m8,imm8                 1/3
  15380. OR    r/m16,imm8                 1/3
  15381. OR    r/m32,imm8                 1/3
  15382. OR    r/m16,imm16                 1/3
  15383. OR    r/m32,imm32                 1/3
  15384. OR    r/m8,r8                     1/3
  15385. OR    r/m16,r16                 1/3
  15386. OR    r/m32,r32                 1/3
  15387. OR    r8,r/m8                     1/2
  15388. OR    r16,r/m16                 1/2
  15389. OR    r32,r/m32                 1/2
  15390. OUT    imm8,AL                    16
  15391. OUT    imm8,AL    (PM, CPL <= IOPL)        11/31
  15392. OUT    imm8,AL    (VM)                25
  15393. OUT    imm8,AX                    16
  15394. OUT    imm8,AX    (PM, CPL <= IOPL)        11/31
  15395. OUT    imm8,AX    (VM)                25
  15396. OUT    imm8,EAX                16
  15397. OUT    imm8,EAX    (PM, CPL <= IOPL)       11/31
  15398. OUT    imm8,EAX    (VM)               25
  15399. OUT    DX,AL                    16
  15400. OUT    DX,AL    (PM, CPL <= IOPL)          11/31
  15401. OUT    DX,AL    (VM)                  25
  15402. OUT    DX,AX                    16
  15403. OUT    DX,AX    (PM, CPL <= IOPL)          11/31
  15404. OUT    DX,AX    (VM)                  25
  15405. OUT    DX,EAX                    16
  15406. OUT    DX,EAX    (PM, CPL <= IOPL)         11/31
  15407. OUT    DX,EAX    (VM)                 25
  15408. OUTSB                    17
  15409. OUTSW                    10/32
  15410. OUTSD                    30
  15411. POP    m16                    6
  15412. POP    m32                    6
  15413. POP    r16                    4
  15414. POP    r32                    4
  15415. POP    sreg                    3
  15416. POP    sreg    (PM)                   f
  15417. POPA                    9
  15418. POPAD                    9
  15419. POPF                    9/6p
  15420. POPF    (PM)                   6
  15421. POPF    (VM)                   9
  15422. POPFD                    9/6p
  15423. POPFD    (PM)                  6
  15424. POPFD    (VM)                  9
  15425. PUSH    r/m16                   4
  15426. PUSH    r/m32                   4
  15427. PUSH    r16                   1
  15428. PUSH    r32                   1
  15429. PUSH    imm8                   1
  15430. PUSH    imm16                   1
  15431. PUSH    imm32                   1
  15432. PUSH    sreg                   3
  15433. PUSHA                    11
  15434. PUSHAD                    11
  15435. PUSHF                    4/3p
  15436. PUSHF    (PM)                  3
  15437. PUSHF    (VM)                  4
  15438. PUSHFD                    4/3p
  15439. PUSHFD    (PM)                 3
  15440. PUSHFD    (VM)                 4
  15441. RCL    r/m8,1                    3/4
  15442. RCL    r/m16,1                    3/4
  15443. RCL    r/m32,1                    3/4
  15444. RCL    r/m8,CL                    8-30/9-31
  15445. RCL    r/m16,CL                8-30/9-31
  15446. RCL    r/m32,CL                8-30/9-31
  15447. RCL    r/m8,imm8                8-30/9-31
  15448. RCL    r/m16,imm8                8-30/9-31
  15449. RCL    r/m32,imm8                8-30/9-31
  15450. RCR    r/m8,1                    3/4
  15451. RCR    r/m16,1                    3/4
  15452. RCR    r/m32,1                    3/4
  15453. RCR    r/m8,CL                    8-30/9-31
  15454. RCR    r/m16,CL                8-30/9-31
  15455. RCR    r/m32,CL                8-30/9-31
  15456. RCR    r/m8,imm8                8-30/9-31
  15457. RCR    r/m16,imm8                8-30/9-31
  15458. RCR    r/m32,imm8                8-30/9-31
  15459. ROL    r/m8,1                    3/4
  15460. ROL    r/m16,1                    3/4
  15461. ROL    r/m32,1                    3/4
  15462. ROL    r/m8,CL                    3/4
  15463. ROL    r/m16,CL                3/4
  15464. ROL    r/m32,CL                3/4
  15465. ROL    r/m8,imm8                2/4
  15466. ROL    r/m16,imm8                2/4
  15467. ROL    r/m32,imm8                2/4
  15468. ROR    r/m8,1                    3/4
  15469. ROR    r/m16,1                    3/4
  15470. ROR    r/m32,1                    3/4
  15471. ROR    r/m8,CL                    3/4
  15472. ROR    r/m16,CL                3/4
  15473. ROR    r/m32,CL                3/4
  15474. ROR    r/m8,imm8                2/4
  15475. ROR    r/m16,imm8                2/4
  15476. ROR    r/m32,imm8                2/4
  15477. RET    (near)                    5
  15478. RET    (far)                    13
  15479. RET    (PM, far, same PL)            18
  15480. RET    (PM, far, different PL)            33
  15481. RET    imm16    (near)                  5
  15482. RET    imm16    (far)                  14
  15483. RET    imm16    (PM, far, same PL)          f
  15484. RET    imm16    (PM, far, different PL)          f
  15485. SAHF                    2
  15486. SAL    r/m8,1                    3/4
  15487. SAL    r/m16,1                    3/4
  15488. SAL    r/m32,1                    3/4
  15489. SAL    r/m8,CL                    3/4
  15490. SAL    r/m16,CL                3/4
  15491. SAL    r/m32,CL                3/4
  15492. SAL    r/m8,imm8                2/4
  15493. SAL    r/m16,imm8                2/4
  15494. SAL    r/m32,imm8                2/4
  15495. SAR    r/m8,1                    3/4
  15496. SAR    r/m16,1                    3/4
  15497. SAR    r/m32,1                    3/4
  15498. SAR    r/m8,CL                    3/4
  15499. SAR    r/m16,CL                3/4
  15500. SAR    r/m32,CL                3/4
  15501. SAR    r/m8,imm8                2/4
  15502. SAR    r/m16,imm8                2/4
  15503. SAR    r/m32,imm8                2/4
  15504. SHL    r/m8,1                    3/4
  15505. SHL    r/m16,1                    3/4
  15506. SHL    r/m32,1                    3/4
  15507. SHL    r/m8,CL                    3/4
  15508. SHL    r/m16,CL                3/4
  15509. SHL    r/m32,CL                3/4
  15510. SHL    r/m8,imm8                2/4
  15511. SHL    r/m16,imm8                2/4
  15512. SHL    r/m32,imm8                2/4
  15513. SHR    r/m8,1                    3/4
  15514. SHR    r/m16,1                    3/4
  15515. SHR    r/m32,1                    3/4
  15516. SHR    r/m8,CL                    3/4
  15517. SHR    r/m16,CL                3/4
  15518. SHR    r/m32,CL                3/4
  15519. SHR    r/m8,imm8                2/4
  15520. SHR    r/m16,imm8                2/4
  15521. SHR    r/m32,imm8                2/4
  15522. SBB    AL,imm8                    1
  15523. SBB    AX,imm16                1
  15524. SBB    EAX,imm32                1
  15525. SBB    r/m8,imm8                1/3
  15526. SBB    r/m16,imm8                1/3
  15527. SBB    r/m32,imm8                1/3
  15528. SBB    r/m16,imm16                1/3
  15529. SBB    r/m32,imm32                1/3
  15530. SBB    r/m8,r8                    1/3
  15531. SBB    r/m16,r16                1/3
  15532. SBB    r/m32,r32                1/3
  15533. SBB    r8,r/m8                    1/2
  15534. SBB    r16,r/m16                1/2
  15535. SBB    r32,r/m32                1/2
  15536. SCASB                    6
  15537. SCASW                    6
  15538. SCASD                    6
  15539. SETALC                    f
  15540. SETcc    r/m8                  4/3
  15541. SGDT    m16&32                   10
  15542. SIDT    m16&32                   10
  15543. SHLD    r/m16,r16,imm8               2/3
  15544. SHLD    r/m32,r32,imm8               2/3
  15545. SHLD    r/m16,r16,CL               3/4
  15546. SHLD    r/m32,r32,CL               3/4
  15547. SHRD    r/m16,r16,imm8               2/3
  15548. SHRD    r/m32,r32,imm8               2/3
  15549. SHRD    r/m16,r16,CL               3/4
  15550. SHRD    r/m32,r32,CL               3/4
  15551. SLDT    r/m16                   2/3
  15552. SLDT    r/m32                   2/3
  15553. SMINT                    f
  15554. SMSW    r/m16                   2/3
  15555. STC                    2
  15556. STD                    2
  15557. STI                    5
  15558. STOSB                    5
  15559. STOSW                    5
  15560. STOSD                    5
  15561. STR    r/m16                    2/3
  15562. SUB    AL,imm8                    1
  15563. SUB    AX,imm16                1
  15564. SUB    EAX,imm32                1
  15565. SUB    r/m8,imm8                1/3
  15566. SUB    r/m16,imm8                1/3
  15567. SUB    r/m32,imm8                1/3
  15568. SUB    r/m16,imm16                1/3
  15569. SUB    r/m32,imm32                1/3
  15570. SUB    r/m8,r8                    1/3
  15571. SUB    r/m16,r16                1/3
  15572. SUB    r/m32,r32                1/3
  15573. SUB    r8,r/m8                    1/2
  15574. SUB    r16,r/m16                1/2
  15575. SUB    r32,r/m32                1/2
  15576. TEST    AL,imm8                   1
  15577. TEST    AX,imm16               1
  15578. TEST    EAX,imm32               1
  15579. TEST    r/m8,imm8               1/2
  15580. TEST    r/m16,imm16               1/2
  15581. TEST    r/m32,imm32               1/2
  15582. TEST    r/m8,r8                   1/2
  15583. TEST    r/m16,r16               1/2
  15584. TEST    r/m32,r32               1/2
  15585. UMOV    r8,r/m8                   ??
  15586. UMOV    r16,r/m16               ??
  15587. UMOV    r32,r/m32               ??
  15588. UMOV    r/m8,r8                   ??
  15589. UMOV    r/m16,r16               ??
  15590. UMOV    r/m32,r32               ??
  15591. VERR    r/m16                   11/11
  15592. VERW    r/m16                   11/11
  15593. WAIT                    1-3
  15594. WBINVD                    5
  15595. XADD    r/m8,r8                   3/4
  15596. XADD    r/m16,r16               3/4
  15597. XADD    r/m32,r32               3/4
  15598. XCHG    AX,r16                   3
  15599. XCHG    EAX,r32                   3
  15600. XCHG    r/m8,r8                   3/5
  15601. XCHG    r/m16,r16               3/5
  15602. XCHG    r/m32,r32               3/5
  15603. XLAT                    4
  15604. XOR    AL,imm8                    1
  15605. XOR    AX,imm16                1
  15606. XOR    EAX,imm32                1
  15607. XOR    r/m8,imm8                1/3
  15608. XOR    r/m16,imm8                1/3
  15609. XOR    r/m32,imm8                1/3
  15610. XOR    r/m16,imm16                1/3
  15611. XOR    r/m32,imm32                1/3
  15612. XOR    r/m8,r8                    1/3
  15613. XOR    r/m16,r16                1/3
  15614. XOR    r/m32,r32                1/3
  15615. XOR    r8,r/m8                    1/2
  15616. XOR    r16,r/m16                1/2
  15617. XOR    r32,r/m32                1/2
  15618. (END)
  15619.  
  15620. ----------------------------------------------------------
  15621. APPENDIX Y6  -    Vendor Instruction Time for Cyrix Cx486DX CPU
  15622.  
  15623. AAA                    4
  15624. AAD                    4
  15625. AAD    imm8                    4
  15626. AAM                    16
  15627. AAM    imm8                    16
  15628. AAS                    4
  15629. ADC    AL,imm8                    1
  15630. ADC    AX,imm16                1
  15631. ADC    EAX,imm32                1
  15632. ADC    r/m8,imm8                1/3
  15633. ADC    r/m16,imm8                1/3
  15634. ADC    r/m32,imm8                1/3
  15635. ADC    r/m16,imm16                1/3
  15636. ADC    r/m32,imm32                1/3
  15637. ADC    r/m8,r8                    1/3
  15638. ADC    r/m16,r16                1/3
  15639. ADC    r/m32,r32                1/3
  15640. ADC    r8,r/m8                    1/3
  15641. ADC    r16,r/m16                1/3
  15642. ADC    r32,r/m32                1/3
  15643. ADD    AL,imm8                    1
  15644. ADD    AX,imm16                1
  15645. ADD    EAX,imm32                1
  15646. ADD    r/m8,imm8                1/3
  15647. ADD    r/m16,imm8                1/3
  15648. ADD    r/m32,imm8                1/3
  15649. ADD    r/m16,imm16                1/3
  15650. ADD    r/m32,imm32                1/3
  15651. ADD    r/m8,r8                    1/3
  15652. ADD    r/m16,r16                1/3
  15653. ADD    r/m32,r32                1/3
  15654. ADD    r8,r/m8                    1/3
  15655. ADD    r16,r/m16                1/3
  15656. ADD    r32,r/m32                1/3
  15657. AND    AL,imm8                    1
  15658. AND    AX,imm16                1
  15659. AND    EAX,imm32                1
  15660. AND    r/m8,imm8                1/3
  15661. AND    r/m16,imm8                1/3
  15662. AND    r/m32,imm8                1/3
  15663. AND    r/m16,imm16                1/3
  15664. AND    r/m32,imm32                1/3
  15665. AND    r/m8,r8                    1/3
  15666. AND    r/m16,r16                1/3
  15667. AND    r/m32,r32                1/3
  15668. AND    r8,r/m8                    1/3
  15669. AND    r16,r/m16                1/3
  15670. AND    r32,r/m32                1/3
  15671. ARPL    r/m16,r16               6/10
  15672. BOUND    r16,m16&16              11 or 11+int
  15673. BOUND    r32,m32&32              11 or 11+int
  15674. BSF    r16,r/m16                5+n/7+n
  15675. BSF    r32,r/m32                5+n/7+n
  15676. BSR    r16,r/m16                5+n/7+n
  15677. BSR    r32,r/m32                5+n/7+n
  15678. BSWAP    r32                  4
  15679. BT    r/m16,r16                 3/6
  15680. BT    r/m32,r32                 3/6
  15681. BT    r/m16,imm8                 3/4
  15682. BT    r/m16,imm8                 3/4
  15683. BTC    r/m16,r16                5/8
  15684. BTC    r/m32,r32                5/8
  15685. BTC    r/m16,imm8                4/5
  15686. BTC    r/m16,imm8                4/5
  15687. BTR    r/m16,r16                5/8
  15688. BTR    r/m32,r32                5/8
  15689. BTR    r/m16,imm8                4/5
  15690. BTR    r/m16,imm8                4/5
  15691. BTS    r/m16,r16                4/7
  15692. BTS    r/m32,r32                4/7
  15693. BTS    r/m16,imm8                3/5
  15694. BTS    r/m16,imm8                3/5
  15695. CALL    rel16                   7
  15696. CALL    r/m16                   8/9
  15697. CALL    ptr16:16               12
  15698. CALL    ptr16:16    (PM, direct segment)      30
  15699. CALL    ptr16:16    (PM, via call gate, same p41
  15700. CALL    ptr16:16    (PM, via call gate, more p83
  15701. CALL    ptr16:16    (PM, via call gate, more p81+4*param
  15702. CALL    m16:16                   14
  15703. CALL    m16:16    (PM, direct segment)        14
  15704. CALL    m16:16    (PM, via gate, same priveleg43
  15705. CALL    m16:16    (PM, via gate, more priveleg85
  15706. CALL    m16:16    (PM, via gate, more priveleg86+4*param
  15707. CALL    rel32                   7
  15708. CALL    r/m32                   8/9
  15709. CALL    ptr16:32               12
  15710. CALL    ptr16:32    (PM, direct segment)      30
  15711. CALL    ptr16:32    (PM, via gate, same privel41
  15712. CALL    ptr16:32    (PM, via gate, more privel83
  15713. CALL    ptr16:32    (PM, via gate, more privel81+4*param
  15714. CALL    m16:32                   14
  15715. CALL    m16:32    (PM, direct segment)        14
  15716. CALL    m16:32    (PM, via gate, same priveleg43
  15717. CALL    m16:32    (PM, via gate, more priveleg85
  15718. CALL    m16:32    (PM, via gate, more priveleg86+4*param
  15719. CBW                    3
  15720. CWDE                    3
  15721. CLC                    1
  15722. CLD                    1
  15723. CLI                    7
  15724. CLTS                    5
  15725. CMC                    1
  15726. CMP    AL,imm8                    1
  15727. CMP    AX,imm16                1
  15728. CMP    EAX,imm32                1
  15729. CMP    r/m8,imm8                1/3
  15730. CMP    r/m16,imm8                1/3
  15731. CMP    r/m32,imm8                1/3
  15732. CMP    r/m16,imm16                1/3
  15733. CMP    r/m32,imm32                1/3
  15734. CMP    r/m8,r8                    1/3
  15735. CMP    r/m16,r16                1/3
  15736. CMP    r/m32,r32                1/3
  15737. CMP    r8,r/m8                    1/3
  15738. CMP    r16,r/m16                1/3
  15739. CMP    r32,r/m32                1/3
  15740. CMPSB                    7
  15741. CMPSW                    7
  15742. CMPSD                    7
  15743. CMPXCHG    r/m8,r8                5/7
  15744. CMPXCHG    r/m16,r16            5/7
  15745. CMPXCHG r/m32,r32            5/7
  15746. CWD                    1
  15747. CDQ                    1
  15748. DAA                    4
  15749. DAS                    4
  15750. DEC    r/m8                    1/3
  15751. DEC    r/m16                    1/3
  15752. DEC    r/m32                    1/3
  15753. DEC    r16                    1
  15754. DEC    r32                    1
  15755. DIV    r/m8                    14/15
  15756. DIV    r/m16                    22/23
  15757. DIV    r/m32                    38/39
  15758. ESC    imm4,r/m                n/a
  15759. ENTER    imm16,0                  7
  15760. ENTER    imm16,1                  10
  15761. ENTER    imm16,imm8              6+4*level
  15762. HLT                    3
  15763. IDIV    r/m8                   19/20
  15764. IDIV    r/m16                   27/28
  15765. IDIV    r/m32                   43/44
  15766. IMUL    r/m8                   3/5
  15767. IMUL    r/m16                   3/5
  15768. IMUL    r/m32                   7/9
  15769. IMUL    r16,r/m16               3/5
  15770. IMUL    r32,r/m32               7/9
  15771. IMUL    r16,imm8               3/5
  15772. IMUL    r32,imm8               7/9
  15773. IMUL    r16,imm16               3/5
  15774. IMUL    r32,imm32               7/9
  15775. IMUL    r16,r/m16,imm8               3/5
  15776. IMUL    r32,r/m32,imm8               7/9
  15777. IMUL    r16,r/m16,imm16               3/5
  15778. IMUL    r32,r/m32,imm32               7/9
  15779. IN    AL,imm8                     16
  15780. IN    AL,imm8    (PM, CPL <= IOPL)         6
  15781. IN    AL,imm8 (VM)                 19
  15782. IN    AX,imm8                     16
  15783. IN    AX,imm8    (PM, CPL <= IOPL)           6
  15784. IN    AX,imm8    (VM)                 19
  15785. IN    EAX,imm8                 16
  15786. IN    EAX,imm8    (PM, CPL <= IOPL)          6
  15787. IN    EAX,imm8    (VM)                19
  15788. IN    AL,DX                     16
  15789. IN    AL,DX    (PM, CPL <= IOPL)           6
  15790. IN    AL,DX    (VM)                   19
  15791. IN    AX,DX                     16
  15792. IN    AX,DX    (PM, CPL <= IOPL)           6
  15793. IN    AX,DX    (VM)                   19
  15794. IN    EAX,DX                     16
  15795. IN    EAX,DX    (PM, CPL <= IOPL)          6
  15796. IN    EAX,DX    (VM)                  19
  15797. INC    r/m8                    1/3
  15798. INC    r/m16                    1/3
  15799. INC    r/m32                    1/3
  15800. INC    r16                    1
  15801. INC    r32                    1
  15802. INSB                    20
  15803. INSW                    20
  15804. INSD                    20
  15805. INT    3                    14
  15806. INT    3    (PM, same privilege)          49
  15807. INT    3    (PM, more privelege)          77
  15808. INT    imm8                    14
  15809. INT    imm8    (PM, same privilege)           49
  15810. INT    imm8    (PM, more privelege)           77
  15811. INTO                    1 or 15
  15812. INTO    (PM, same privilege)           1 or 49
  15813. INTO    (PM, more privelege)           1 or 77
  15814. INVD                    4
  15815. INVLPG    m                 4
  15816. IRET                    14
  15817. IRET    (PM, to same privilege)           31
  15818. IRET    (PM, to lesser privilege)       66
  15819. IRETD                    14
  15820. IRETD    (PM, to same privilege)          31
  15821. IRETD    (PM, to lesser privilege)      66
  15822. Jcc    rel8                    1 or 4
  15823. Jcc    rel16                    1 or 4
  15824. Jcc    rel32                    1 or 4
  15825. JCXZ    rel8                   3 or 7
  15826. JECXZ    rel8                  3 or 7
  15827. JMP    rel8                    4
  15828. JMP    rel16                    4
  15829. JMP    r/m16                    6/8
  15830. JMP    ptr16:16                9
  15831. JMP    ptr16:16    (PM, direct segment)       26
  15832. JMP    ptr16:16    (PM, via call gate, same pr37
  15833. JMP    m16:16                    11
  15834. JMP    m16:16    (PM, direct segment)         30
  15835. JMP    m16:16    (PM, via call gate, same priv39
  15836. JMP    rel32                    4
  15837. JMP    r/m32                    6/8
  15838. JMP    ptr16:32                9
  15839. JMP    ptr16:32    (PM, direct segment)       26
  15840. JMP    ptr16:32    (PM, via call gate, same pr37
  15841. JMP    m16:32                    11
  15842. JMP    m16:32    (PM, direct segment)         30
  15843. JMP    m16:32    (PM, via call gate, same priv39
  15844. LAHF                    2
  15845. LAR    r16,r/m16                11/12
  15846. LAR    r32,r/m32                11/12
  15847. LDS    r16,m16:16                6
  15848. LDS    r32,m16:32                6
  15849. LDS    r16,m16:16    (PM)             19
  15850. LDS    r32,m16:32    (PM)             19
  15851. LSS    r16,m16:16                6
  15852. LSS    r32,m16:32                6
  15853. LSS    r16,m16:16    (PM)             19
  15854. LSS    r32,m16:32    (PM)                19
  15855. LES    r16,m16:16                6
  15856. LES    r32,m16:32                6
  15857. LES    r16,m16:16    (PM)             19
  15858. LES    r32,m16:32    (PM)             19
  15859. LFS    r16,m16:16                6
  15860. LFS    r32,m16:32                6
  15861. LFS    r16,m16:16    (PM)             19
  15862. LFS    r32,m16:32    (PM)             19
  15863. LGS    r16,m16:16                6
  15864. LGS    r32,m16:32                6
  15865. LGS    r16,m16:16    (PM)             19
  15866. LGS    r32,m16:32    (PM)             19
  15867. LEA    r16,m                    2 (w/o index)/3(with index)
  15868. LEA    r32,m                    2 (w/o index)/3(with index)
  15869. LEAVE                    3
  15870. LGDT    m16&32                   9
  15871. LIDT    m16&32                   9
  15872. LLDT    r/m16                   16/17
  15873. LMSW    r/m16                   5
  15874. LODSB                    4
  15875. LODSW                    4
  15876. LODSD                    4
  15877. LOOP    rel8                   3 or 7
  15878. LOOPE    rel8                  3 or 7
  15879. LOOPNE    rel8                 3 or 7
  15880. LSL    r16,r/m16                14/15
  15881. LSL    r32,r/m32                14/15
  15882. LTR    r/m16                    16/17
  15883. MOV    r/m8,r8                    1/2
  15884. MOV    r/m16,r16                1/2
  15885. MOV    r/m32,r32                1/2
  15886. MOV    r8,r/m8                    1/2
  15887. MOV    r16,r/m16                1/2
  15888. MOV    r32,r/m32                1/2
  15889. MOV    r/m16,sreg                1/2
  15890. MOV    sreg,r/m16                2/3
  15891. MOV    sreg,r/m16    (PM)             15/16
  15892. MOV    AL,moffs8                2
  15893. MOV    AX,moffs16                2
  15894. MOV    EAX,moffs32                2
  15895. MOV    moffs8,AL                1/2
  15896. MOV    moffs16,AX                1/2
  15897. MOV    moffs32,EAX                1/2
  15898. MOV    r8,imm8                    1
  15899. MOV    r16,imm16                1
  15900. MOV    r32,imm32                1
  15901. MOV    r/m8,imm8                1/2
  15902. MOV    r/m16,imm16                1/2
  15903. MOV    r/m32,imm32                1/2
  15904. MOV    CR0,r32                    11
  15905. MOV    CR2,r32                    3
  15906. MOV    CR3,r32                    3
  15907. MOV    r32,CRi                    1 (if CR0)/3 (if CR2,CR3)
  15908. MOV    r32,DR0-DR3                3
  15909. MOV    r32,DR4-DR5                3
  15910. MOV    r32,DR6-DR7                3
  15911. MOV    DR0-DR3,r32                1
  15912. MOV    DR4-DR5,r32                1
  15913. MOV    DR6-DR7,r32                1
  15914. MOV    r32,TR4-TR7                3
  15915. MOV    r32,TR3                    5
  15916. MOV    TR3,r32                    5
  15917. MOV    TR4-TR7,r32                1
  15918. MOVSB                    5
  15919. MOVSW                    5
  15920. MOVSD                    5
  15921. MOVSX    r16,r/m8              1/3
  15922. MOVSX    r32,r/m8              1/3
  15923. MOVSX    r32,r/m16              1/3
  15924. MOVZX    r16,r/m8              2/3
  15925. MOVZX    r32,r/m8              2/3
  15926. MOVZX    r32,r/m16              2/3
  15927. MUL    r/m8                    3/5
  15928. MUL    r/m16                    3/5
  15929. MUL    r/m32                    7/9
  15930. NEG    r/m8                    1/3
  15931. NEG    r/m16                    1/3
  15932. NEG    r/m32                    1/3
  15933. NOP                    1
  15934. NOT    r/m8                    1/3
  15935. NOT    r/m16                    1/3
  15936. NOT    r/m32                    1/3
  15937. OR    AL,imm8                     1
  15938. OR    AX,imm16                 1
  15939. OR    EAX,imm32                 1
  15940. OR    r/m8,imm8                 1/3
  15941. OR    r/m16,imm8                 1/3
  15942. OR    r/m32,imm8                 1/3
  15943. OR    r/m16,imm16                 1/3
  15944. OR    r/m32,imm32                 1/3
  15945. OR    r/m8,r8                     1/3
  15946. OR    r/m16,r16                 1/3
  15947. OR    r/m32,r32                 1/3
  15948. OR    r8,r/m8                     1/3
  15949. OR    r16,r/m16                 1/3
  15950. OR    r32,r/m32                 1/3
  15951. OUT    imm8,AL                    18
  15952. OUT    imm8,AL    (PM, CPL <= IOPL)        4
  15953. OUT    imm8,AL    (VM)                17
  15954. OUT    imm8,AX                    18
  15955. OUT    imm8,AX    (PM, CPL <= IOPL)        4
  15956. OUT    imm8,AX    (VM)                17
  15957. OUT    imm8,EAX                18
  15958. OUT    imm8,EAX    (PM, CPL <= IOPL)       4
  15959. OUT    imm8,EAX    (VM)               17
  15960. OUT    DX,AL                    18
  15961. OUT    DX,AL    (PM, CPL <= IOPL)          4
  15962. OUT    DX,AL    (VM)                  17
  15963. OUT    DX,AX                    18
  15964. OUT    DX,AX    (PM, CPL <= IOPL)          4
  15965. OUT    DX,AX    (VM)                  17
  15966. OUT    DX,EAX                    18
  15967. OUT    DX,EAX    (PM, CPL <= IOPL)         4
  15968. OUT    DX,EAX    (VM)                 17
  15969. OUTSB                    20
  15970. OUTSW                    20
  15971. OUTSD                    20
  15972. POP    m16                    5
  15973. POP    m32                    5
  15974. POP    r16                    3
  15975. POP    r32                    3
  15976. POP    sreg                    4
  15977. POP    sreg    (PM)                   18
  15978. POPA                    18
  15979. POPAD                    18
  15980. POPF                    4
  15981. POPF    (PM)                   4
  15982. POPF    (VM)                   4
  15983. POPFD                        4
  15984. POPFD    (PM)                  4
  15985. POPFD    (VM)                  4
  15986. PUSH    r/m16                   2/4
  15987. PUSH    r/m32                   2/4
  15988. PUSH    r16                   2
  15989. PUSH    r32                   2
  15990. PUSH    imm8                   2
  15991. PUSH    imm16                   2
  15992. PUSH    imm32                   2
  15993. PUSH    sreg                   2
  15994. PUSHA                    17
  15995. PUSHAD                    17
  15996. PUSHF                    2
  15997. PUSHF    (PM)                  2
  15998. PUSHF    (VM)                  2
  15999. PUSHFD                    2
  16000. PUSHFD    (PM)                 2
  16001. PUSHFD    (VM)                 2
  16002. RCL    r/m8,1                    9/9
  16003. RCL    r/m16,1                    9/9
  16004. RCL    r/m32,1                    9/9
  16005. RCL    r/m8,CL                    9/9
  16006. RCL    r/m16,CL                9/9
  16007. RCL    r/m32,CL                9/9
  16008. RCL    r/m8,imm8                9/9
  16009. RCL    r/m16,imm8                9/9
  16010. RCL    r/m32,imm8                9/9
  16011. RCR    r/m8,1                    9/9
  16012. RCR    r/m16,1                    9/9
  16013. RCR    r/m32,1                    9/9
  16014. RCR    r/m8,CL                    9/9
  16015. RCR    r/m16,CL                9/9
  16016. RCR    r/m32,CL                9/9
  16017. RCR    r/m8,imm8                9/9
  16018. RCR    r/m16,imm8                9/9
  16019. RCR    r/m32,imm8                9/9
  16020. ROL    r/m8,1                    2/4
  16021. ROL    r/m16,1                    2/4
  16022. ROL    r/m32,1                    2/4
  16023. ROL    r/m8,CL                    3/5
  16024. ROL    r/m16,CL                3/5
  16025. ROL    r/m32,CL                3/5
  16026. ROL    r/m8,imm8                2/4
  16027. ROL    r/m16,imm8                2/4
  16028. ROL    r/m32,imm8                2/4
  16029. ROR    r/m8,1                    2/4
  16030. ROR    r/m16,1                    2/4
  16031. ROR    r/m32,1                    2/4
  16032. ROR    r/m8,CL                    3/5
  16033. ROR    r/m16,CL                3/5
  16034. ROR    r/m32,CL                3/5
  16035. ROR    r/m8,imm8                2/4
  16036. ROR    r/m16,imm8                2/4
  16037. ROR    r/m32,imm8                2/4
  16038. RET    (near)                    10
  16039. RET    (far)                    13
  16040. RET    (PM, far, same PL)            26
  16041. RET    (PM, far, different PL)            61
  16042. RET    imm16    (near)                  10
  16043. RET    imm16    (far)                  13
  16044. RET    imm16    (PM, far, same PL)          26
  16045. RET    imm16    (PM, far, different PL)          61
  16046. RSDC    m80,sreg               10
  16047. RSLDT    m80                  10
  16048. RSM                    76
  16049. RSTS    m80                   10
  16050. SAHF                    2
  16051. SAL    r/m8,1                    2/4
  16052. SAL    r/m16,1                    2/4
  16053. SAL    r/m32,1                    2/4
  16054. SAL    r/m8,CL                    3/5
  16055. SAL    r/m16,CL                3/5
  16056. SAL    r/m32,CL                3/5
  16057. SAL    r/m8,imm8                2/4
  16058. SAL    r/m16,imm8                2/4
  16059. SAL    r/m32,imm8                2/4
  16060. SAR    r/m8,1                    2/4
  16061. SAR    r/m16,1                    2/4
  16062. SAR    r/m32,1                    2/4
  16063. SAR    r/m8,CL                    3/5
  16064. SAR    r/m16,CL                3/5
  16065. SAR    r/m32,CL                3/5
  16066. SAR    r/m8,imm8                2/4
  16067. SAR    r/m16,imm8                2/4
  16068. SAR    r/m32,imm8                2/4
  16069. SHL    r/m8,1                    1/3
  16070. SHL    r/m16,1                    1/3
  16071. SHL    r/m32,1                    1/3
  16072. SHL    r/m8,CL                    2/4
  16073. SHL    r/m16,CL                2/4
  16074. SHL    r/m32,CL                2/4
  16075. SHL    r/m8,imm8                1/3
  16076. SHL    r/m16,imm8                1/3
  16077. SHL    r/m32,imm8                1/3
  16078. SHR    r/m8,1                    1/3
  16079. SHR    r/m16,1                    1/3
  16080. SHR    r/m32,1                    1/3
  16081. SHR    r/m8,CL                    2/4
  16082. SHR    r/m16,CL                2/4
  16083. SHR    r/m32,CL                2/4
  16084. SHR    r/m8,imm8                1/3
  16085. SHR    r/m16,imm8                1/3
  16086. SHR    r/m32,imm8                1/3
  16087. SBB    AL,imm8                    1
  16088. SBB    AX,imm16                1
  16089. SBB    EAX,imm32                1
  16090. SBB    r/m8,imm8                1/3
  16091. SBB    r/m16,imm8                1/3
  16092. SBB    r/m32,imm8                1/3
  16093. SBB    r/m16,imm16                1/3
  16094. SBB    r/m32,imm32                1/3
  16095. SBB    r/m8,r8                    1/3
  16096. SBB    r/m16,r16                1/3
  16097. SBB    r/m32,r32                1/3
  16098. SBB    r8,r/m8                    1/3
  16099. SBB    r16,r/m16                1/3
  16100. SBB    r32,r/m32                1/3
  16101. SCASB                    5
  16102. SCASW                    5
  16103. SCASD                    5
  16104. SETALC                    n/a
  16105. SETcc    r/m8                  2/2
  16106. SGDT    m16&32                   6
  16107. SIDT    m16&32                   6
  16108. SHLD    r/m16,r16,imm8               1/3
  16109. SHLD    r/m32,r32,imm8               1/3
  16110. SHLD    r/m16,r16,CL               3/5
  16111. SHLD    r/m32,r32,CL               3/5
  16112. SHRD    r/m16,r16,imm8               1/3
  16113. SHRD    r/m32,r32,imm8               1/3
  16114. SHRD    r/m16,r16,CL               3/5
  16115. SHRD    r/m32,r32,CL               3/5
  16116. SLDT    r/m16                   1/2
  16117. SLDT    r/m32                   1/2
  16118. SMINT                    24
  16119. SMSW    r/m16                   1/2
  16120. STC                    1
  16121. STD                    1
  16122. STI                    7
  16123. STOSB                    3
  16124. STOSW                    3
  16125. STOSD                    3
  16126. STR    r/m16                    1/2
  16127. SUB    AL,imm8                    1
  16128. SUB    AX,imm16                1
  16129. SUB    EAX,imm32                1
  16130. SUB    r/m8,imm8                1/3
  16131. SUB    r/m16,imm8                1/3
  16132. SUB    r/m32,imm8                1/3
  16133. SUB    r/m16,imm16                1/3
  16134. SUB    r/m32,imm32                1/3
  16135. SUB    r/m8,r8                    1/3
  16136. SUB    r/m16,r16                1/3
  16137. SUB    r/m32,r32                1/3
  16138. SUB    r8,r/m8                    1/3
  16139. SUB    r16,r/m16                1/3
  16140. SUB    r32,r/m32                1/3
  16141. SVDC    sreg,m80               18
  16142. SVLDT    m80                  18
  16143. SVTS    m80                   18
  16144. TEST    AL,imm8                   1
  16145. TEST    AX,imm16               1
  16146. TEST    EAX,imm32               1
  16147. TEST    r/m8,imm8               1/3
  16148. TEST    r/m16,imm16               1/3
  16149. TEST    r/m32,imm32               1/3
  16150. TEST    r/m8,r8                   1/3
  16151. TEST    r/m16,r16               1/3
  16152. TEST    r/m32,r32               1/3
  16153. UMOV    r8,r/m8                   n/a
  16154. UMOV    r16,r/m16               n/a
  16155. UMOV    r32,r/m32               n/a
  16156. UMOV    r/m8,r8                   n/a
  16157. UMOV    r/m16,r16               n/a
  16158. UMOV    r/m32,r32               n/a
  16159. VERR    r/m16                   9/10
  16160. VERW    r/m16                   9/10
  16161. WAIT                    5
  16162. WBINVD                    4
  16163. XADD    r/m8,r8                   3/6
  16164. XADD    r/m16,r16               3/6
  16165. XADD    r/m32,r32               3/6
  16166. XCHG    AX,r16                   3
  16167. XCHG    EAX,r32                   3
  16168. XCHG    r/m8,r8                   3/4
  16169. XCHG    r/m16,r16               3/4
  16170. XCHG    r/m32,r32               3/4
  16171. XLAT                    3
  16172. XOR    AL,imm8                    1
  16173. XOR    AX,imm16                1
  16174. XOR    EAX,imm32                1
  16175. XOR    r/m8,imm8                1/3
  16176. XOR    r/m16,imm8                1/3
  16177. XOR    r/m32,imm8                1/3
  16178. XOR    r/m16,imm16                1/3
  16179. XOR    r/m32,imm32                1/3
  16180. XOR    r/m8,r8                    1/3
  16181. XOR    r/m16,r16                1/3
  16182. XOR    r/m32,r32                1/3
  16183. XOR    r8,r/m8                    1/3
  16184. XOR    r16,r/m16                1/3
  16185. XOR    r32,r/m32                1/3
  16186. (END)
  16187.  
  16188. ----------------------------------------------------------
  16189. APPENDIX Y7  -    Vendor Instruction Time for Intel Pentium Processor
  16190.  
  16191. AAA                    3
  16192. AAD                    10
  16193. AAD    imm8                    n/a
  16194. AAM                    18
  16195. AAM    imm8                    n/a
  16196. AAS                    3
  16197. ADC    AL,imm8                    1
  16198. ADC    AX,imm16                1
  16199. ADC    EAX,imm32                1
  16200. ADC    r/m8,imm8                1/3
  16201. ADC    r/m16,imm8                1/3
  16202. ADC    r/m32,imm8                1/3
  16203. ADC    r/m16,imm16                1/3
  16204. ADC    r/m32,imm32                1/3
  16205. ADC    r/m8,r8                    1/3
  16206. ADC    r/m16,r16                1/3
  16207. ADC    r/m32,r32                1/3
  16208. ADC    r8,r/m8                    1/2
  16209. ADC    r16,r/m16                1/2
  16210. ADC    r32,r/m32                1/2
  16211. ADD    AL,imm8                    1
  16212. ADD    AX,imm16                1
  16213. ADD    EAX,imm32                1
  16214. ADD    r/m8,imm8                1/3
  16215. ADD    r/m16,imm8                1/3
  16216. ADD    r/m32,imm8                1/3
  16217. ADD    r/m16,imm16                1/3
  16218. ADD    r/m32,imm32                1/3
  16219. ADD    r/m8,r8                    1/3
  16220. ADD    r/m16,r16                1/3
  16221. ADD    r/m32,r32                1/3
  16222. ADD    r8,r/m8                    1/2
  16223. ADD    r16,r/m16                1/2
  16224. ADD    r32,r/m32                1/2
  16225. AND    AL,imm8                    1
  16226. AND    AX,imm16                1
  16227. AND    EAX,imm32                1
  16228. AND    r/m8,imm8                1/3
  16229. AND    r/m16,imm8                1/3
  16230. AND    r/m32,imm8                1/3
  16231. AND    r/m16,imm16                1/3
  16232. AND    r/m32,imm32                1/3
  16233. AND    r/m8,r8                    1/3
  16234. AND    r/m16,r16                1/3
  16235. AND    r/m32,r32                1/3
  16236. AND    r8,r/m8                    1/2
  16237. AND    r16,r/m16                1/2
  16238. AND    r32,r/m32                1/2
  16239. ARPL    r/m16,r16               f
  16240. BOUND    r16,m16&16              8/int+32
  16241. BOUND    r32,m32&32              f
  16242. BSF    r16,r/m16                6-34/6-35
  16243. BSF    r32,r/m32                6-42/6-43
  16244. BSR    r16,r/m16                7-39/7-40
  16245. BSR    r32,r/m32                7-71/7-72
  16246. BSWAP    r32                  1
  16247. BT    r/m16,r16                 4/9
  16248. BT    r/m32,r32                 4/9
  16249. BT    r/m16,imm8                 4
  16250. BT    r/m16,imm8                 4
  16251. BTC    r/m16,r16                7/13
  16252. BTC    r/m32,r32                7/13
  16253. BTC    r/m16,imm8                7/8
  16254. BTC    r/m16,imm8                7/8
  16255. BTR    r/m16,r16                7/13
  16256. BTR    r/m32,r32                7/13
  16257. BTR    r/m16,imm8                7/8
  16258. BTR    r/m16,imm8                7/8
  16259. BTS    r/m16,r16                7/13
  16260. BTS    r/m32,r32                7/13
  16261. BTS    r/m16,imm8                7/8
  16262. BTS    r/m16,imm8                7/8
  16263. CALL    rel16                   1
  16264. CALL    r/m16                   2
  16265. CALL    ptr16:16               4
  16266. CALL    ptr16:16    (PM, direct segment)      f
  16267. CALL    ptr16:16    (PM, via call gate, same p22
  16268. CALL    ptr16:16    (PM, via call gate, more p44
  16269. CALL    ptr16:16    (PM, via call gate, more p45+2*x
  16270. CALL    m16:16                   5
  16271. CALL    m16:16    (PM, direct segment)        f
  16272. CALL    m16:16    (PM, via gate, same priveleg22
  16273. CALL    m16:16    (PM, via gate, more priveleg44
  16274. CALL    m16:16    (PM, via gate, more priveleg45+2*x
  16275. CALL    rel32                   1
  16276. CALL    r/m32                   2
  16277. CALL    ptr16:32               4
  16278. CALL    ptr16:32    (PM, direct segment)      f
  16279. CALL    ptr16:32    (PM, via gate, same privel22
  16280. CALL    ptr16:32    (PM, via gate, more privel44
  16281. CALL    ptr16:32    (PM, via gate, more privel45+2*x
  16282. CALL    m16:32                   5
  16283. CALL    m16:32    (PM, direct segment)        f
  16284. CALL    m16:32    (PM, via gate, same priveleg22
  16285. CALL    m16:32    (PM, via gate, more priveleg44
  16286. CALL    m16:32    (PM, via gate, more priveleg45+2*x
  16287. CBW                    3
  16288. CWDE                    3
  16289. CLC                    2
  16290. CLD                    2
  16291. CLI                    7
  16292. CLTS                    10
  16293. CMC                    2
  16294. CMOVcc    r16,r/m16             f
  16295. CMOVcc    r32,r/m32             f
  16296. CMP    AL,imm8                    1
  16297. CMP    AX,imm16                1
  16298. CMP    EAX,imm32                1
  16299. CMP    r/m8,imm8                1/2
  16300. CMP    r/m16,imm8                1/2
  16301. CMP    r/m32,imm8                1/2
  16302. CMP    r/m16,imm16                1/2
  16303. CMP    r/m32,imm32                1/2
  16304. CMP    r/m8,r8                    1/2
  16305. CMP    r/m16,r16                1/2
  16306. CMP    r/m32,r32                1/2
  16307. CMP    r8,r/m8                    1/2
  16308. CMP    r16,r/m16                1/2
  16309. CMP    r32,r/m32                1/2
  16310. CMPSB                    5
  16311. CMPSW                    5
  16312. CMPSD                    5
  16313. CMPXCHG    r/m8,r8                6
  16314. CMPXCHG    r/m16,r16            6
  16315. CMPXCHG r/m32,r32            6
  16316. CMPXCHG8B    r/m32                  10
  16317. CPUID                    14
  16318. CWD                    2
  16319. CDQ                    2
  16320. DAA                    3
  16321. DAS                    3
  16322. DEC    r/m8                    1/3
  16323. DEC    r/m16                    1/3
  16324. DEC    r/m32                    1/3
  16325. DEC    r16                    1
  16326. DEC    r32                    1
  16327. DIV    r/m8                    17
  16328. DIV    r/m16                    25
  16329. DIV    r/m32                    41
  16330. ESC    imm4,r/m                f
  16331. ENTER    imm16,0                  11
  16332. ENTER    imm16,1                  15
  16333. ENTER    imm16,imm8              15+2*n
  16334. HLT                    imfinity
  16335. IBTS    r/m16,AX,CL,r16               None
  16336. IBTS    r/m32,EAX,CL,r32           f
  16337. IDIV    r/m8                   22
  16338. IDIV    r/m16                   30
  16339. IDIV    r/m32                   46
  16340. IMUL    r/m8                   11
  16341. IMUL    r/m16                   11
  16342. IMUL    r/m32                   10
  16343. IMUL    r16,r/m16               10
  16344. IMUL    r32,r/m32               10
  16345. IMUL    r16,imm8               10
  16346. IMUL    r32,imm8               10
  16347. IMUL    r16,imm16               10
  16348. IMUL    r32,imm32               10
  16349. IMUL    r16,r/m16,imm8               10
  16350. IMUL    r32,r/m32,imm8               10
  16351. IMUL    r16,r/m16,imm16               10
  16352. IMUL    r32,r/m32,imm32               10
  16353. IN    AL,imm8                     7
  16354. IN    AL,imm8    (PM, CPL <= IOPL)         4/21
  16355. IN    AL,imm8 (VM)                 19
  16356. IN    AX,imm8                     7
  16357. IN    AX,imm8    (PM, CPL <= IOPL)           4/21
  16358. IN    AX,imm8    (VM)                 19
  16359. IN    EAX,imm8                 7
  16360. IN    EAX,imm8    (PM, CPL <= IOPL)          4/21
  16361. IN    EAX,imm8    (VM)                19
  16362. IN    AL,DX                     7
  16363. IN    AL,DX    (PM, CPL <= IOPL)           4/21
  16364. IN    AL,DX    (VM)                   19
  16365. IN    AX,DX                     7
  16366. IN    AX,DX    (PM, CPL <= IOPL)           4/21
  16367. IN    AX,DX    (VM)                   19
  16368. IN    EAX,DX                     7
  16369. IN    EAX,DX    (PM, CPL <= IOPL)          4/21
  16370. IN    EAX,DX    (VM)                  19
  16371. INC    r/m8                    1/3
  16372. INC    r/m16                    1/3
  16373. INC    r/m32                    1/3
  16374. INC    r16                    1
  16375. INC    r32                    1
  16376. INSB                    9
  16377. INSW                    9
  16378. INSD                    9
  16379. INT    3                    13
  16380. INT    3    (PM, same privilege)          27
  16381. INT    3    (PM, more privelege)          44
  16382. INT    imm8                    16
  16383. INT    imm8    (PM, same privilege)           31
  16384. INT    imm8    (PM, more privelege)           48
  16385. INTO                    4/13
  16386. INTO    (PM, same privilege)           4/27
  16387. INTO    (PM, more privelege)           4/44
  16388. INVD                    15
  16389. INVLPG    m                 25
  16390. IRET                    10
  16391. IRET    (PM, to same privilege)           10
  16392. IRET    (PM, to lesser privilege)       27
  16393. IRETD                    10
  16394. IRETD    (PM, to same privilege)          10
  16395. IRETD    (PM, to lesser privilege)      27
  16396. Jcc    rel8                    1
  16397. Jcc    rel16                    1
  16398. Jcc    rel32                    1
  16399. JCXZ    rel8                   6,5
  16400. JECXZ    rel8                  6,5
  16401. JMP    rel8                    1
  16402. JMP    rel16                    1
  16403. JMP    r/m16                    2
  16404. JMP    ptr16:16                3
  16405. JMP    ptr16:16    (PM, direct segment)       3
  16406. JMP    ptr16:16    (PM, via call gate, same pr18
  16407. JMP    m16:16                    4
  16408. JMP    m16:16    (PM, direct segment)         4
  16409. JMP    m16:16    (PM, via call gate, same priv18
  16410. JMP    rel32                    1
  16411. JMP    r/m32                    2
  16412. JMP    ptr16:32                3
  16413. JMP    ptr16:32    (PM, direct segment)       3
  16414. JMP    ptr16:32    (PM, via call gate, same pr18
  16415. JMP    m16:32                    4
  16416. JMP    m16:32    (PM, direct segment)         4
  16417. JMP    m16:32    (PM, via call gate, same priv18
  16418. LAHF                    2
  16419. LAR    r16,r/m16                8
  16420. LAR    r32,r/m32                8
  16421. LDS    r16,m16:16                4
  16422. LDS    r32,m16:32                4
  16423. LDS    r16,m16:16    (PM)             f
  16424. LDS    r32,m16:32    (PM)             f
  16425. LSS    r16,m16:16                4
  16426. LSS    r32,m16:32                4
  16427. LSS    r16,m16:16    (PM)             8
  16428. LSS    r32,m16:32    (PM)                8
  16429. LES    r16,m16:16                4
  16430. LES    r32,m16:32                4
  16431. LES    r16,m16:16    (PM)             f
  16432. LES    r32,m16:32    (PM)             f
  16433. LFS    r16,m16:16                4
  16434. LFS    r32,m16:32                4
  16435. LFS    r16,m16:16    (PM)             f
  16436. LFS    r32,m16:32    (PM)             f
  16437. LGS    r16,m16:16                4
  16438. LGS    r32,m16:32                4
  16439. LGS    r16,m16:16    (PM)             f
  16440. LGS    r32,m16:32    (PM)             f
  16441. LEA    r16,m                    1
  16442. LEA    r32,m                    1
  16443. LEAVE                    3
  16444. LGDT    m16&32                   6
  16445. LIDT    m16&32                   6
  16446. LLDT    r/m16                   9
  16447. LMSW    r/m16                   8
  16448. LOADALL                    f
  16449. LODSB                    2
  16450. LODSW                    2
  16451. LODSD                    2
  16452. LOOP    rel8                   5/6
  16453. LOOPE    rel8                  7/8
  16454. LOOPNE    rel8                 7/8
  16455. LSL    r16,r/m16                8
  16456. LSL    r32,r/m32                8
  16457. LTR    r/m16                    10
  16458. MOV    r/m8,r8                    1
  16459. MOV    r/m16,r16                1
  16460. MOV    r/m32,r32                1
  16461. MOV    r8,r/m8                    1
  16462. MOV    r16,r/m16                1
  16463. MOV    r32,r/m32                1
  16464. MOV    r/m16,sreg                1
  16465. MOV    sreg,r/m16                2/3
  16466. MOV    sreg,r/m16    (PM)             f
  16467. MOV    AL,moffs8                1
  16468. MOV    AX,moffs16                1
  16469. MOV    EAX,moffs32                1
  16470. MOV    moffs8,AL                1
  16471. MOV    moffs16,AX                1
  16472. MOV    moffs32,EAX                1
  16473. MOV    r8,imm8                    1
  16474. MOV    r16,imm16                1
  16475. MOV    r32,imm32                1
  16476. MOV    r/m8,imm8                1
  16477. MOV    r/m16,imm16                1
  16478. MOV    r/m32,imm32                1
  16479. MOV    CR0,r32                    22
  16480. MOV    CR2,r32                    12/21,46
  16481. MOV    CR3,r32                    12/21,46
  16482. MOV    CR4,r32                    14
  16483. MOV    r32,CRi                    4
  16484. MOV    r32,DR0-DR3                11
  16485. MOV    r32,DR4-DR5                11
  16486. MOV    r32,DR6-DR7                11
  16487. MOV    DR0-DR3,r32                11
  16488. MOV    DR4-DR5,r32                12
  16489. MOV    DR6-DR7,r32                11
  16490. MOV    r32,TR4-TR7                None
  16491. MOV    r32,TR3                    None
  16492. MOV    TR3,r32                    None
  16493. MOV    TR4-TR7,r32                None
  16494. MOVSB                    4
  16495. MOVSW                    4
  16496. MOVSD                    4
  16497. MOVSX    r16,r/m8              3
  16498. MOVSX    r32,r/m8              3
  16499. MOVSX    r32,r/m16              3
  16500. MOVZX    r16,r/m8              3
  16501. MOVZX    r32,r/m8              3
  16502. MOVZX    r32,r/m16              3
  16503. MUL    r/m8                    11
  16504. MUL    r/m16                    11
  16505. MUL    r/m32                    10
  16506. NEG    r/m8                    1/3
  16507. NEG    r/m16                    1/3
  16508. NEG    r/m32                    1/3
  16509. NOP                    1
  16510. NOT    r/m8                    1/3
  16511. NOT    r/m16                    1/3
  16512. NOT    r/m32                    1/3
  16513. OR    AL,imm8                     1
  16514. OR    AX,imm16                 1
  16515. OR    EAX,imm32                 1
  16516. OR    r/m8,imm8                 1/3
  16517. OR    r/m16,imm8                 1/3
  16518. OR    r/m32,imm8                 1/3
  16519. OR    r/m16,imm16                 1/3
  16520. OR    r/m32,imm32                 1/3
  16521. OR    r/m8,r8                     1/3
  16522. OR    r/m16,r16                 1/3
  16523. OR    r/m32,r32                 1/3
  16524. OR    r8,r/m8                     1/2
  16525. OR    r16,r/m16                 1/2
  16526. OR    r32,r/m32                 1/2
  16527. OUT    imm8,AL                    12
  16528. OUT    imm8,AL    (PM, CPL <= IOPL)        9/25
  16529. OUT    imm8,AL    (VM)                24
  16530. OUT    imm8,AX                    12
  16531. OUT    imm8,AX    (PM, CPL <= IOPL)        9/25
  16532. OUT    imm8,AX    (VM)                24
  16533. OUT    imm8,EAX                12
  16534. OUT    imm8,EAX    (PM, CPL <= IOPL)       9/25
  16535. OUT    imm8,EAX    (VM)               24
  16536. OUT    DX,AL                    12
  16537. OUT    DX,AL    (PM, CPL <= IOPL)          9/25
  16538. OUT    DX,AL    (VM)                  24
  16539. OUT    DX,AX                    12
  16540. OUT    DX,AX    (PM, CPL <= IOPL)          9/25
  16541. OUT    DX,AX    (VM)                  24
  16542. OUT    DX,EAX                    12
  16543. OUT    DX,EAX    (PM, CPL <= IOPL)         9/25
  16544. OUT    DX,EAX    (VM)                 24
  16545. OUTSB                    13
  16546. OUTSW                    13
  16547. OUTSD                    13
  16548. POP    m16                    3
  16549. POP    m32                    3
  16550. POP    r16                    1
  16551. POP    r32                    1
  16552. POP    sreg                    3
  16553. POP    sreg    (PM)                   f
  16554. POPA                    5
  16555. POPAD                    5
  16556. POPF                    f
  16557. POPF    (PM)                   4
  16558. POPF    (VM)                   6
  16559. POPFD                    f
  16560. POPFD    (PM)                  4
  16561. POPFD    (VM)                  6
  16562. PUSH    r/m16                   2
  16563. PUSH    r/m32                   2
  16564. PUSH    r16                   1
  16565. PUSH    r32                   1
  16566. PUSH    imm8                   1
  16567. PUSH    imm16                   1
  16568. PUSH    imm32                   1
  16569. PUSH    sreg                   1
  16570. PUSHA                    5
  16571. PUSHAD                    5
  16572. PUSHF                    f
  16573. PUSHF    (PM)                  3
  16574. PUSHF    (VM)                  4
  16575. PUSHFD                    f
  16576. PUSHFD    (PM)                 3
  16577. PUSHFD    (VM)                 4
  16578. RCL    r/m8,1                    1/3
  16579. RCL    r/m16,1                    1/3
  16580. RCL    r/m32,1                    1/3
  16581. RCL    r/m8,CL                    7-24/9-26
  16582. RCL    r/m16,CL                7-24/9-26
  16583. RCL    r/m32,CL                7-24/9-26
  16584. RCL    r/m8,imm8                8-25/10-27
  16585. RCL    r/m16,imm8                8-25/10-27
  16586. RCL    r/m32,imm8                8-25/10-27
  16587. RCR    r/m8,1                    1/3
  16588. RCR    r/m16,1                    1/3
  16589. RCR    r/m32,1                    1/3
  16590. RCR    r/m8,CL                    7-24/9-26
  16591. RCR    r/m16,CL                7-24/9-26
  16592. RCR    r/m32,CL                7-24/9-26
  16593. RCR    r/m8,imm8                8-25/10-27
  16594. RCR    r/m16,imm8                8-25/10-27
  16595. RCR    r/m32,imm8                8-25/10-27
  16596. ROL    r/m8,1                    1/3
  16597. ROL    r/m16,1                    1/3
  16598. ROL    r/m32,1                    1/3
  16599. ROL    r/m8,CL                    4
  16600. ROL    r/m16,CL                4
  16601. ROL    r/m32,CL                4
  16602. ROL    r/m8,imm8                1/3
  16603. ROL    r/m16,imm8                1/3
  16604. ROL    r/m32,imm8                1/3
  16605. ROR    r/m8,1                    1/3
  16606. ROR    r/m16,1                    1/3
  16607. ROR    r/m32,1                    1/3
  16608. ROR    r/m8,CL                    4
  16609. ROR    r/m16,CL                4
  16610. ROR    r/m32,CL                4
  16611. ROR    r/m8,imm8                1/3
  16612. ROR    r/m16,imm8                1/3
  16613. ROR    r/m32,imm8                1/3
  16614. RDMSR                    20-24
  16615. RDTSC                    f
  16616. RET    (near)                    3
  16617. RET    (far)                    4
  16618. RET    (PM, far, same PL)            4
  16619. RET    (PM, far, different PL)            23
  16620. RET    imm16    (near)                  4
  16621. RET    imm16    (far)                  4
  16622. RET    imm16    (PM, far, same PL)          4
  16623. RET    imm16    (PM, far, different PL)          23
  16624. RSDC    m80,sreg               f
  16625. RSLDT    m80                  f
  16626. RSM                    83
  16627. RSTS    m80                   f
  16628. SAHF                    2
  16629. SAL    r/m8,1                    1/3
  16630. SAL    r/m16,1                    1/3
  16631. SAL    r/m32,1                    1/3
  16632. SAL    r/m8,CL                    4
  16633. SAL    r/m16,CL                4
  16634. SAL    r/m32,CL                4
  16635. SAL    r/m8,imm8                1/3
  16636. SAL    r/m16,imm8                1/3
  16637. SAL    r/m32,imm8                1/3
  16638. SAR    r/m8,1                    1/3
  16639. SAR    r/m16,1                    1/3
  16640. SAR    r/m32,1                    1/3
  16641. SAR    r/m8,CL                    4
  16642. SAR    r/m16,CL                4
  16643. SAR    r/m32,CL                4
  16644. SAR    r/m8,imm8                1/3
  16645. SAR    r/m16,imm8                1/3
  16646. SAR    r/m32,imm8                1/3
  16647. SHL    r/m8,1                    1/3
  16648. SHL    r/m16,1                    1/3
  16649. SHL    r/m32,1                    1/3
  16650. SHL    r/m8,CL                    4
  16651. SHL    r/m16,CL                4
  16652. SHL    r/m32,CL                4
  16653. SHL    r/m8,imm8                1/3
  16654. SHL    r/m16,imm8                1/3
  16655. SHL    r/m32,imm8                1/3
  16656. SHR    r/m8,1                    1/3
  16657. SHR    r/m16,1                    1/3
  16658. SHR    r/m32,1                    1/3
  16659. SHR    r/m8,CL                    4
  16660. SHR    r/m16,CL                4
  16661. SHR    r/m32,CL                4
  16662. SHR    r/m8,imm8                1/3
  16663. SHR    r/m16,imm8                1/3
  16664. SHR    r/m32,imm8                1/3
  16665. SBB    AL,imm8                    1
  16666. SBB    AX,imm16                1
  16667. SBB    EAX,imm32                1
  16668. SBB    r/m8,imm8                1/3
  16669. SBB    r/m16,imm8                1/3
  16670. SBB    r/m32,imm8                1/3
  16671. SBB    r/m16,imm16                1/3
  16672. SBB    r/m32,imm32                1/3
  16673. SBB    r/m8,r8                    1/3
  16674. SBB    r/m16,r16                1/3
  16675. SBB    r/m32,r32                1/3
  16676. SBB    r8,r/m8                    1/2
  16677. SBB    r16,r/m16                1/2
  16678. SBB    r32,r/m32                1/2
  16679. SCASB                    4
  16680. SCASW                    4
  16681. SCASD                    4
  16682. SETALC                    f
  16683. SETcc    r/m8                  1/2
  16684. SGDT    m16&32                   4
  16685. SIDT    m16&32                   4
  16686. SHLD    r/m16,r16,imm8               4
  16687. SHLD    r/m32,r32,imm8               4
  16688. SHLD    r/m16,r16,CL               4/5
  16689. SHLD    r/m32,r32,CL               4/5
  16690. SHRD    r/m16,r16,imm8               4
  16691. SHRD    r/m32,r32,imm8               4
  16692. SHRD    r/m16,r16,CL               4/5
  16693. SHRD    r/m32,r32,CL               4/5
  16694. SLDT    r/m16                   2
  16695. SLDT    r/m32                   f
  16696. SMINT                    f
  16697. SMSW    r/m16                   4
  16698. STC                    2
  16699. STD                    2
  16700. STI                    7
  16701. STOSB                    3
  16702. STOSW                    3
  16703. STOSD                    3
  16704. STR    r/m16                    2
  16705. SUB    AL,imm8                    1
  16706. SUB    AX,imm16                1
  16707. SUB    EAX,imm32                1
  16708. SUB    r/m8,imm8                1/3
  16709. SUB    r/m16,imm8                1/3
  16710. SUB    r/m32,imm8                1/3
  16711. SUB    r/m16,imm16                1/3
  16712. SUB    r/m32,imm32                1/3
  16713. SUB    r/m8,r8                    1/3
  16714. SUB    r/m16,r16                1/3
  16715. SUB    r/m32,r32                1/3
  16716. SUB    r8,r/m8                    1/2
  16717. SUB    r16,r/m16                1/2
  16718. SUB    r32,r/m32                1/2
  16719. SVDC    sreg,m80               f
  16720. SVLDT    m80                  f
  16721. SVTS    m80                   f
  16722. TEST    AL,imm8                   1
  16723. TEST    AX,imm16               1
  16724. TEST    EAX,imm32               1
  16725. TEST    r/m8,imm8               1/2
  16726. TEST    r/m16,imm16               1/2
  16727. TEST    r/m32,imm32               1/2
  16728. TEST    r/m8,r8                   1/2
  16729. TEST    r/m16,r16               1/2
  16730. TEST    r/m32,r32               1/2
  16731. UMOV    r8,r/m8                   f
  16732. UMOV    r16,r/m16               f
  16733. UMOV    r32,r/m32               f
  16734. UMOV    r/m8,r8                   f
  16735. UMOV    r/m16,r16               f
  16736. UMOV    r/m32,r32               f
  16737. VERR    r/m16                   7
  16738. VERW    r/m16                   7
  16739. WAIT                    1
  16740. WBINVD                    2000+
  16741. WRMSR                    30-45
  16742. XADD    r/m8,r8                   3/4
  16743. XADD    r/m16,r16               3/4
  16744. XADD    r/m32,r32               3/4
  16745. XCHG    AX,r16                   2
  16746. XCHG    EAX,r32                   2
  16747. XCHG    r/m8,r8                   3
  16748. XCHG    r/m16,r16               3
  16749. XCHG    r/m32,r32               3
  16750. XLAT                    4
  16751. XOR    AL,imm8                    1
  16752. XOR    AX,imm16                1
  16753. XOR    EAX,imm32                1
  16754. XOR    r/m8,imm8                1/3
  16755. XOR    r/m16,imm8                1/3
  16756. XOR    r/m32,imm8                1/3
  16757. XOR    r/m16,imm16                1/3
  16758. XOR    r/m32,imm32                1/3
  16759. XOR    r/m8,r8                    1/3
  16760. XOR    r/m16,r16                1/3
  16761. XOR    r/m32,r32                1/3
  16762. XOR    r8,r/m8                    1/2
  16763. XOR    r16,r/m16                1/2
  16764. XOR    r32,r/m32                1/2
  16765. (END)
  16766.  
  16767. ----------------------------------------------------------
  16768. APPENDIX Y8  -    Vendor Instruction Time for Cyrix Cx6x86 (M1) CPU
  16769.  
  16770. AAA                    7
  16771. AAD                    7
  16772. AAD    imm8                    7
  16773. AAM                    13-21
  16774. AAM    imm8                    13-21??
  16775. AAS                    7
  16776. ADC    AL,imm8                    1
  16777. ADC    AX,imm16                1
  16778. ADC    EAX,imm32                1
  16779. ADC    r/m8,imm8                1
  16780. ADC    r/m16,imm8                1
  16781. ADC    r/m32,imm8                1
  16782. ADC    r/m16,imm16                1
  16783. ADC    r/m32,imm32                1
  16784. ADC    r/m8,r8                    1
  16785. ADC    r/m16,r16                1
  16786. ADC    r/m32,r32                1
  16787. ADC    r8,r/m8                    1
  16788. ADC    r16,r/m16                1
  16789. ADC    r32,r/m32                1
  16790. ADD    AL,imm8                    1
  16791. ADD    AX,imm16                1
  16792. ADD    EAX,imm32                1
  16793. ADD    r/m8,imm8                1
  16794. ADD    r/m16,imm8                1
  16795. ADD    r/m32,imm8                1
  16796. ADD    r/m16,imm16                1
  16797. ADD    r/m32,imm32                1
  16798. ADD    r/m8,r8                    1
  16799. ADD    r/m16,r16                1
  16800. ADD    r/m32,r32                1
  16801. ADD    r8,r/m8                    1
  16802. ADD    r16,r/m16                1
  16803. ADD    r32,r/m32                1
  16804. AND    AL,imm8                    1
  16805. AND    AX,imm16                1
  16806. AND    EAX,imm32                1
  16807. AND    r/m8,imm8                1
  16808. AND    r/m16,imm8                1
  16809. AND    r/m32,imm8                1
  16810. AND    r/m16,imm16                1
  16811. AND    r/m32,imm32                1
  16812. AND    r/m8,r8                    1
  16813. AND    r/m16,r16                1
  16814. AND    r/m32,r32                1
  16815. AND    r8,r/m8                    1
  16816. AND    r16,r/m16                1
  16817. AND    r32,r/m32                1
  16818. ARPL    r/m16,r16               9
  16819. BOUND    r16,m16&16              11 or 20
  16820. BOUND    r32,m32&32              11 or 20
  16821. BSF    r16,r/m16                3
  16822. BSF    r32,r/m32                3
  16823. BSR    r16,r/m16                3
  16824. BSR    r32,r/m32                3
  16825. BSWAP    r32                  4
  16826. BT    r/m16,r16                 5/6
  16827. BT    r/m32,r32                 5/6
  16828. BT    r/m16,imm8                 2
  16829. BT    r/m16,imm8                 2
  16830. BTC    r/m16,r16                5/6
  16831. BTC    r/m32,r32                5/6
  16832. BTC    r/m16,imm8                3
  16833. BTC    r/m16,imm8                3
  16834. BTR    r/m16,r16                5/6
  16835. BTR    r/m32,r32                5/6
  16836. BTR    r/m16,imm8                3
  16837. BTR    r/m16,imm8                3
  16838. BTS    r/m16,r16                5/6
  16839. BTS    r/m32,r32                5/6
  16840. BTS    r/m16,imm8                3
  16841. BTS    r/m16,imm8                3
  16842. CALL    rel16                   1
  16843. CALL    r/m16                   1/3
  16844. CALL    ptr16:16               3
  16845. CALL    ptr16:16    (PM, direct segment)      4
  16846. CALL    ptr16:16    (PM, via call gate, same p15
  16847. CALL    ptr16:16    (PM, via call gate, more p26
  16848. CALL    ptr16:16    (PM, via call gate, more p35+2*param
  16849. CALL    m16:16                   5
  16850. CALL    m16:16    (PM, direct segment)        8
  16851. CALL    m16:16    (PM, via gate, same priveleg20
  16852. CALL    m16:16    (PM, via gate, more priveleg31
  16853. CALL    m16:16    (PM, via gate, more priveleg40+2*param
  16854. CALL    rel32                   1
  16855. CALL    r/m32                   1/3
  16856. CALL    ptr16:32               3
  16857. CALL    ptr16:32    (PM, direct segment)      4
  16858. CALL    ptr16:32    (PM, via gate, same privel15
  16859. CALL    ptr16:32    (PM, via gate, more privel26
  16860. CALL    ptr16:32    (PM, via gate, more privel35+2*param
  16861. CALL    m16:32                   5
  16862. CALL    m16:32    (PM, direct segment)        8
  16863. CALL    m16:32    (PM, via gate, same priveleg20
  16864. CALL    m16:32    (PM, via gate, more priveleg31
  16865. CALL    m16:32    (PM, via gate, more priveleg40+2*param
  16866. CBW                    3
  16867. CWDE                    2
  16868. CLC                    1
  16869. CLD                    7
  16870. CLI                    7
  16871. CLTS                    10
  16872. CMC                    2
  16873. CMP    AL,imm8                    1
  16874. CMP    AX,imm16                1
  16875. CMP    EAX,imm32                1
  16876. CMP    r/m8,imm8                1
  16877. CMP    r/m16,imm8                1
  16878. CMP    r/m32,imm8                1
  16879. CMP    r/m16,imm16                1
  16880. CMP    r/m32,imm32                1
  16881. CMP    r/m8,r8                    1
  16882. CMP    r/m16,r16                1
  16883. CMP    r/m32,r32                1
  16884. CMP    r8,r/m8                    1
  16885. CMP    r16,r/m16                1
  16886. CMP    r32,r/m32                1
  16887. CMPSB                    5
  16888. CMPSW                    5
  16889. CMPSD                    5
  16890. CMPXCHG    r/m8,r8                11
  16891. CMPXCHG    r/m16,r16            11
  16892. CMPXCHG r/m32,r32            11
  16893. CPUID                    12
  16894. CWD                    2
  16895. CDQ                    2
  16896. DAA                    9
  16897. DAS                    9
  16898. DEC    r/m8                    1
  16899. DEC    r/m16                    1
  16900. DEC    r/m32                    1
  16901. DEC    r16                    1
  16902. DEC    r32                    1
  16903. DIV    r/m8                    13-17
  16904. DIV    r/m16                    13-25
  16905. DIV    r/m32                    13-41
  16906. ENTER    imm16,0                  10
  16907. ENTER    imm16,1                  13
  16908. ENTER    imm16,imm8              10+level*3
  16909. HLT                    5
  16910. IDIV    r/m8                   16-20
  16911. IDIV    r/m16                   16-28
  16912. IDIV    r/m32                   17-45
  16913. IMUL    r/m8                   4
  16914. IMUL    r/m16                   4
  16915. IMUL    r/m32                   10
  16916. IMUL    r16,r/m16               4
  16917. IMUL    r32,r/m32               10
  16918. IMUL    r16,imm8               ??
  16919. IMUL    r32,imm8               ??
  16920. IMUL    r16,imm16               ??
  16921. IMUL    r32,imm32               ??
  16922. IMUL    r16,r/m16,imm8               5
  16923. IMUL    r32,r/m32,imm8               11
  16924. IMUL    r16,r/m16,imm16               5
  16925. IMUL    r32,r/m32,imm32               11
  16926. IN    AL,imm8                     14
  16927. IN    AL,imm8    (PM, CPL <= IOPL)         14
  16928. IN    AL,imm8 (VM)                 28
  16929. IN    AX,imm8                     14
  16930. IN    AX,imm8    (PM, CPL <= IOPL)           14
  16931. IN    AX,imm8    (VM)                 28
  16932. IN    EAX,imm8                 14
  16933. IN    EAX,imm8    (PM, CPL <= IOPL)          14
  16934. IN    EAX,imm8    (VM)                28
  16935. IN    AL,DX                     14
  16936. IN    AL,DX    (PM, CPL <= IOPL)           14
  16937. IN    AL,DX    (VM)                   28
  16938. IN    AX,DX                     14
  16939. IN    AX,DX    (PM, CPL <= IOPL)           14
  16940. IN    AX,DX    (VM)                   28
  16941. IN    EAX,DX                     14
  16942. IN    EAX,DX    (PM, CPL <= IOPL)          14
  16943. IN    EAX,DX    (VM)                  28
  16944. INC    r/m8                    1
  16945. INC    r/m16                    1
  16946. INC    r/m32                    1
  16947. INC    r16                    1
  16948. INC    r32                    1
  16949. INSB                    14
  16950. INSW                    14
  16951. INSD                    14
  16952. INT    3                    9
  16953. INT    3    (PM, same privilege)          21
  16954. INT    3    (PM, more privelege)          32
  16955. INT    imm8                    9
  16956. INT    imm8    (PM, same privilege)           21
  16957. INT    imm8    (PM, more privelege)           32
  16958. INTO                    6 or ??
  16959. INTO    (PM, same privilege)           6 or 15+21
  16960. INTO    (PM, more privelege)           6 or 15+32
  16961. INVD                    12
  16962. INVLPG    m                 13
  16963. IRET                    7
  16964. IRET    (PM, to same privilege)           10
  16965. IRET    (PM, to lesser privilege)       26
  16966. IRETD                    7
  16967. IRETD    (PM, to same privilege)          10
  16968. IRETD    (PM, to lesser privilege)      26
  16969. Jcc    rel8                    1 or 1
  16970. Jcc    rel16                    1 or 1
  16971. Jcc    rel32                    1 or 1
  16972. JCXZ    rel8                   1 or 1
  16973. JECXZ    rel8                  1 or 1
  16974. JMP    rel8                    1
  16975. JMP    rel16                    1
  16976. JMP    r/m16                    1/3
  16977. JMP    ptr16:16                1
  16978. JMP    ptr16:16    (PM, direct segment)       4
  16979. JMP    ptr16:16    (PM, via call gate, same pr14
  16980. JMP    m16:16                    5
  16981. JMP    m16:16    (PM, direct segment)         7
  16982. JMP    m16:16    (PM, via call gate, same priv17
  16983. JMP    rel32                    1
  16984. JMP    r/m32                    1/3
  16985. JMP    ptr16:32                1
  16986. JMP    ptr16:32    (PM, direct segment)       4
  16987. JMP    ptr16:32    (PM, via call gate, same pr14
  16988. JMP    m16:32                    5
  16989. JMP    m16:32    (PM, direct segment)         7
  16990. JMP    m16:32    (PM, via call gate, same priv17
  16991. LAHF                    2
  16992. LAR    r16,r/m16                8
  16993. LAR    r32,r/m32                8
  16994. LDS    r16,m16:16                2
  16995. LDS    r32,m16:32                2
  16996. LDS    r16,m16:16    (PM)             4
  16997. LDS    r32,m16:32    (PM)             4
  16998. LSS    r16,m16:16                2
  16999. LSS    r32,m16:32                2
  17000. LSS    r16,m16:16    (PM)             4
  17001. LSS    r32,m16:32    (PM)                4
  17002. LES    r16,m16:16                2
  17003. LES    r32,m16:32                2
  17004. LES    r16,m16:16    (PM)             4
  17005. LES    r32,m16:32    (PM)             4
  17006. LFS    r16,m16:16                2
  17007. LFS    r32,m16:32                2
  17008. LFS    r16,m16:16    (PM)             4
  17009. LFS    r32,m16:32    (PM)             4
  17010. LGS    r16,m16:16                2
  17011. LGS    r32,m16:32                2
  17012. LGS    r16,m16:16    (PM)             4
  17013. LGS    r32,m16:32    (PM)             4
  17014. LEA    r16,m                    1
  17015. LEA    r32,m                    1
  17016. LEAVE                    4
  17017. LGDT    m16&32                   8
  17018. LIDT    m16&32                   8
  17019. LLDT    r/m16                   5
  17020. LMSW    r/m16                   13
  17021. LOADALL                    None
  17022. LODSB                    3
  17023. LODSW                    3
  17024. LODSD                    3
  17025. LOOP    rel8                   1
  17026. LOOPE    rel8                  1
  17027. LOOPNE    rel8                 1
  17028. LSL    r16,r/m16                8
  17029. LSL    r32,r/m32                8
  17030. LTR    r/m16                    7
  17031. MOV    r/m8,r8                    1
  17032. MOV    r/m16,r16                1
  17033. MOV    r/m32,r32                1
  17034. MOV    r8,r/m8                    1
  17035. MOV    r16,r/m16                1
  17036. MOV    r32,r/m32                1
  17037. MOV    r/m16,sreg                1
  17038. MOV    sreg,r/m16                1
  17039. MOV    sreg,r/m16    (PM)             1/3
  17040. MOV    AL,moffs8                1
  17041. MOV    AX,moffs16                1
  17042. MOV    EAX,moffs32                1
  17043. MOV    moffs8,AL                1
  17044. MOV    moffs16,AX                1
  17045. MOV    moffs32,EAX                1
  17046. MOV    r8,imm8                    1
  17047. MOV    r16,imm16                1
  17048. MOV    r32,imm32                1
  17049. MOV    r/m8,imm8                1
  17050. MOV    r/m16,imm16                1
  17051. MOV    r/m32,imm32                1
  17052. MOV    CR0,r32                    20
  17053. MOV    CR2,r32                    5
  17054. MOV    CR3,r32                    5
  17055. MOV    r32,CRi                    6
  17056. MOV    r32,DR0-DR3                14
  17057. MOV    r32,DR4-DR5                14
  17058. MOV    r32,DR6-DR7                14
  17059. MOV    DR0-DR3,r32                16
  17060. MOV    DR4-DR5,r32                16
  17061. MOV    DR6-DR7,r32                16
  17062. MOV    r32,TR4-TR7                6
  17063. MOV    r32,TR3                    5
  17064. MOV    TR3,r32                    10
  17065. MOV    TR4-TR7,r32                10
  17066. MOVSB                    4
  17067. MOVSW                    4
  17068. MOVSD                    4
  17069. MOVSX    r16,r/m8              1
  17070. MOVSX    r32,r/m8              1
  17071. MOVSX    r32,r/m16              1
  17072. MOVZX    r16,r/m8              1
  17073. MOVZX    r32,r/m8              1
  17074. MOVZX    r32,r/m16              1
  17075. MUL    r/m8                    4
  17076. MUL    r/m16                    4
  17077. MUL    r/m32                    10
  17078. NEG    r/m8                    1
  17079. NEG    r/m16                    1
  17080. NEG    r/m32                    1
  17081. NOP                    1
  17082. NOT    r/m8                    1
  17083. NOT    r/m16                    1
  17084. NOT    r/m32                    1
  17085. OR    AL,imm8                     1
  17086. OR    AX,imm16                 1
  17087. OR    EAX,imm32                 1
  17088. OR    r/m8,imm8                 1
  17089. OR    r/m16,imm8                 1
  17090. OR    r/m32,imm8                 1
  17091. OR    r/m16,imm16                 1
  17092. OR    r/m32,imm32                 1
  17093. OR    r/m8,r8                     1
  17094. OR    r/m16,r16                 1
  17095. OR    r/m32,r32                 1
  17096. OR    r8,r/m8                     1
  17097. OR    r16,r/m16                 1
  17098. OR    r32,r/m32                 1
  17099. OUT    imm8,AL                    14
  17100. OUT    imm8,AL    (PM, CPL <= IOPL)        14
  17101. OUT    imm8,AL    (VM)                28
  17102. OUT    imm8,AX                    14
  17103. OUT    imm8,AX    (PM, CPL <= IOPL)        14
  17104. OUT    imm8,AX    (VM)                28
  17105. OUT    imm8,EAX                14
  17106. OUT    imm8,EAX    (PM, CPL <= IOPL)       14
  17107. OUT    imm8,EAX    (VM)               28
  17108. OUT    DX,AL                    14
  17109. OUT    DX,AL    (PM, CPL <= IOPL)          14
  17110. OUT    DX,AL    (VM)                  28
  17111. OUT    DX,AX                    14
  17112. OUT    DX,AX    (PM, CPL <= IOPL)          14
  17113. OUT    DX,AX    (VM)                  28
  17114. OUT    DX,EAX                    14
  17115. OUT    DX,EAX    (PM, CPL <= IOPL)         14
  17116. OUT    DX,EAX    (VM)                 28
  17117. OUTSB                    14
  17118. OUTSW                    14
  17119. OUTSD                    14
  17120. POP    m16                    1
  17121. POP    m32                    1
  17122. POP    r16                    1
  17123. POP    r32                    1
  17124. POP    sreg                    1
  17125. POP    sreg    (PM)                   3
  17126. POPA                    6
  17127. POPAD                    6
  17128. POPF                    9
  17129. POPF    (PM)                   9
  17130. POPF    (VM)                   9
  17131. POPFD                    9
  17132. POPFD    (PM)                  9
  17133. POPFD    (VM)                  9
  17134. PUSH    r/m16                   1
  17135. PUSH    r/m32                   1
  17136. PUSH    r16                   1
  17137. PUSH    r32                   1
  17138. PUSH    imm8                   1
  17139. PUSH    imm16                   1
  17140. PUSH    imm32                   1
  17141. PUSH    sreg                   1
  17142. PUSHA                    6
  17143. PUSHAD                    6
  17144. PUSHF                    2
  17145. PUSHF    (PM)                  2
  17146. PUSHF    (VM)                  2
  17147. PUSHFD                    2
  17148. PUSHFD    (PM)                 2
  17149. PUSHFD    (VM)                 2
  17150. RCL    r/m8,1                    3
  17151. RCL    r/m16,1                    3
  17152. RCL    r/m32,1                    3
  17153. RCL    r/m8,CL                    8
  17154. RCL    r/m16,CL                8
  17155. RCL    r/m32,CL                8
  17156. RCL    r/m8,imm8                8
  17157. RCL    r/m16,imm8                8
  17158. RCL    r/m32,imm8                8
  17159. RCR    r/m8,1                    4
  17160. RCR    r/m16,1                    4
  17161. RCR    r/m32,1                    4
  17162. RCR    r/m8,CL                    9
  17163. RCR    r/m16,CL                9
  17164. RCR    r/m32,CL                9
  17165. RCR    r/m8,imm8                9
  17166. RCR    r/m16,imm8                9
  17167. RCR    r/m32,imm8                9
  17168. ROL    r/m8,1                    1
  17169. ROL    r/m16,1                    1
  17170. ROL    r/m32,1                    1
  17171. ROL    r/m8,CL                    2
  17172. ROL    r/m16,CL                2
  17173. ROL    r/m32,CL                2
  17174. ROL    r/m8,imm8                1
  17175. ROL    r/m16,imm8                1
  17176. ROL    r/m32,imm8                1
  17177. ROR    r/m8,1                    1
  17178. ROR    r/m16,1                    1
  17179. ROR    r/m32,1                    1
  17180. ROR    r/m8,CL                    2
  17181. ROR    r/m16,CL                2
  17182. ROR    r/m32,CL                2
  17183. ROR    r/m8,imm8                1
  17184. ROR    r/m16,imm8                1
  17185. ROR    r/m32,imm8                1
  17186. RET    (near)                    3
  17187. RET    (far)                    4
  17188. RET    (PM, far, same PL)            7
  17189. RET    (PM, far, different PL)            23
  17190. RET    imm16    (near)                  4
  17191. RET    imm16    (far)                  4
  17192. RET    imm16    (PM, far, same PL)          7
  17193. RET    imm16    (PM, far, different PL)          23
  17194. RSDC    m80,sreg               6
  17195. RSLDT    m80                  6
  17196. RSM                    40
  17197. RSTS    m80                   6
  17198. SAHF                    1
  17199. SAL    r/m8,1                    1
  17200. SAL    r/m16,1                    1
  17201. SAL    r/m32,1                    1
  17202. SAL    r/m8,CL                    2
  17203. SAL    r/m16,CL                2
  17204. SAL    r/m32,CL                2
  17205. SAL    r/m8,imm8                1
  17206. SAL    r/m16,imm8                1
  17207. SAL    r/m32,imm8                1
  17208. SAR    r/m8,1                    1
  17209. SAR    r/m16,1                    1
  17210. SAR    r/m32,1                    1
  17211. SAR    r/m8,CL                    2
  17212. SAR    r/m16,CL                2
  17213. SAR    r/m32,CL                2
  17214. SAR    r/m8,imm8                1
  17215. SAR    r/m16,imm8                1
  17216. SAR    r/m32,imm8                1
  17217. SHL    r/m8,1                    1
  17218. SHL    r/m16,1                    1
  17219. SHL    r/m32,1                    1
  17220. SHL    r/m8,CL                    2
  17221. SHL    r/m16,CL                2
  17222. SHL    r/m32,CL                2
  17223. SHL    r/m8,imm8                1
  17224. SHL    r/m16,imm8                1
  17225. SHL    r/m32,imm8                1
  17226. SHR    r/m8,1                    1
  17227. SHR    r/m16,1                    1
  17228. SHR    r/m32,1                    1
  17229. SHR    r/m8,CL                    2
  17230. SHR    r/m16,CL                2
  17231. SHR    r/m32,CL                2
  17232. SHR    r/m8,imm8                1
  17233. SHR    r/m16,imm8                1
  17234. SHR    r/m32,imm8                1
  17235. SBB    AL,imm8                    1
  17236. SBB    AX,imm16                1
  17237. SBB    EAX,imm32                1
  17238. SBB    r/m8,imm8                1
  17239. SBB    r/m16,imm8                1
  17240. SBB    r/m32,imm8                1
  17241. SBB    r/m16,imm16                1
  17242. SBB    r/m32,imm32                1
  17243. SBB    r/m8,r8                    1
  17244. SBB    r/m16,r16                1
  17245. SBB    r/m32,r32                1
  17246. SBB    r8,r/m8                    1
  17247. SBB    r16,r/m16                1
  17248. SBB    r32,r/m32                1
  17249. SCASB                    2
  17250. SCASW                    2
  17251. SCASD                    2
  17252. SETALC                    n/a
  17253. SETcc    r/m8                  1
  17254. SGDT    m16&32                   4
  17255. SIDT    m16&32                   4
  17256. SHLD    r/m16,r16,imm8               4
  17257. SHLD    r/m32,r32,imm8               4
  17258. SHLD    r/m16,r16,CL               5
  17259. SHLD    r/m32,r32,CL               5
  17260. SHRD    r/m16,r16,imm8               4
  17261. SHRD    r/m32,r32,imm8               4
  17262. SHRD    r/m16,r16,CL               5
  17263. SHRD    r/m32,r32,CL               5
  17264. SLDT    r/m16                   1
  17265. SLDT    r/m32                   1
  17266. SMINT                    55
  17267. SMSW    r/m16                   6
  17268. STC                    1
  17269. STD                    7
  17270. STI                    7
  17271. STOSB                    2
  17272. STOSW                    2
  17273. STOSD                    2
  17274. STR    r/m16                    4
  17275. SUB    AL,imm8                    1
  17276. SUB    AX,imm16                1
  17277. SUB    EAX,imm32                1
  17278. SUB    r/m8,imm8                1
  17279. SUB    r/m16,imm8                1
  17280. SUB    r/m32,imm8                1
  17281. SUB    r/m16,imm16                1
  17282. SUB    r/m32,imm32                1
  17283. SUB    r/m8,r8                    1
  17284. SUB    r/m16,r16                1
  17285. SUB    r/m32,r32                1
  17286. SUB    r8,r/m8                    1
  17287. SUB    r16,r/m16                1
  17288. SUB    r32,r/m32                1
  17289. SVDC    sreg,m80               12
  17290. SVLDT    m80                  12
  17291. SVTS    m80                   14
  17292. TEST    AL,imm8                   1
  17293. TEST    AX,imm16               1
  17294. TEST    EAX,imm32               1
  17295. TEST    r/m8,imm8               1
  17296. TEST    r/m16,imm16               1
  17297. TEST    r/m32,imm32               1
  17298. TEST    r/m8,r8                   1
  17299. TEST    r/m16,r16               1
  17300. TEST    r/m32,r32               1
  17301. VERR    r/m16                   7
  17302. VERW    r/m16                   7
  17303. WAIT                    5
  17304. WBINVD                    15
  17305. XADD    r/m8,r8                   2
  17306. XADD    r/m16,r16               2
  17307. XADD    r/m32,r32               2
  17308. XCHG    AX,r16                   2
  17309. XCHG    EAX,r32                   2
  17310. XCHG    r/m8,r8                   2
  17311. XCHG    r/m16,r16               2
  17312. XCHG    r/m32,r32               2
  17313. XLAT                    4
  17314. XOR    AL,imm8                    1
  17315. XOR    AX,imm16                1
  17316. XOR    EAX,imm32                1
  17317. XOR    r/m8,imm8                1
  17318. XOR    r/m16,imm8                1
  17319. XOR    r/m32,imm8                1
  17320. XOR    r/m16,imm16                1
  17321. XOR    r/m32,imm32                1
  17322. XOR    r/m8,r8                    1
  17323. XOR    r/m16,r16                1
  17324. XOR    r/m32,r32                1
  17325. XOR    r8,r/m8                    1
  17326. XOR    r16,r/m16                1
  17327. XOR    r32,r/m32                1
  17328. (END)
  17329.  
  17330. ---------------------------------------------------------
  17331. ---------------------------------------------------------
  17332. [Credits]:
  17333. 1) THANX specially for/to Martin Malik and RealSoft.
  17334.    (malik@elf.stuba.sk)
  17335.    Cyrix's CPUs type data. Many good info :)
  17336.    Some Vendors strings for CPUID.
  17337.    P54M ID code
  17338.    Part of This Kind of Info (C) RealSoft.
  17339. 2) THANX to Grzegorz Mazur for His Interest to CPU
  17340.    identification and to Cyrix-Vendor CPUs.
  17341. 3) THANX to Bas van Sisseren
  17342.    He always looks this doc for 'ERORRS'.
  17343. 4) THANX to all people from Intel, AMD, TI, Cyrix, UMC,
  17344.    who helped with information and CPU samples.
  17345. 5) THANX to all, who send notes, testing CPUs with PHG tools
  17346. 6) Great Special thanx for Jakub Bogusz for spell checking
  17347.    and some rightfull notes :)
  17348. ----------------------------------------------------------
  17349. Q&A:
  17350.  
  17351. Q. - How to find latest version of OPCODE.LST ?
  17352. A. - You may find it within  Ralf's INTERxx.ZIP.
  17353.  
  17354. Q. - Did PHG have WWW page, where placed OPCODE.LST ?
  17355. A. - Unfortunetly, No.
  17356.      But it will be released somewhen. :))
  17357. -----------------------------------------------------------
  17358. [2 All]
  17359. If You found some errors or incorrections in this text
  17360. please    send info 'bout it.
  17361. -----------------------------------------------------------
  17362. [Internal]
  17363. Thanx for  Urri, Stas, Afo, Kernel.3,Den96
  17364.        and all other numbers of
  17365.        Potemkin's Hackers Group.
  17366.        - - - - - - - - - - - - - -
  17367. Special Thanks for  AX (MISA).
  17368. ------------------------------------------------------------
  17369. Sorry, But EOF
  17370.  
  17371.